GNU/Linux >> Belajar Linux >  >> Linux

C ++ keamanan utas operator baru di linux dan gcc 4

Umumnya new operator aman untuk thread - namun jaminan keamanan thread untuk panggilan ke STL dan perpustakaan standar diatur oleh standar - ini tidak berarti bahwa mereka tidak mengetahui thread - mereka cenderung memiliki jaminan keamanan thread yang terdefinisi dengan sangat baik untuk operasi tertentu. Misalnya mengulang melalui daftar dengan mode read-only aman untuk banyak pembaca, sedangkan mengulang melalui daftar dan membuat pembaruan tidak. Anda harus membaca dokumentasi dan melihat berbagai jaminan, meskipun tidak terlalu berat dan cenderung masuk akal.


Sementara saya berbicara tentang konsep yang belum saya gunakan, saya rasa saya harus menyebutkan bahwa jika Anda menggunakan memori bersama, Anda mungkin ingin memastikan bahwa Anda hanya menggunakan jenis POD, dan menggunakan penempatan baru.

Kedua, jika Anda menggunakan memori bersama seperti yang umumnya dipahami pada sistem linux, Anda mungkin menggunakan banyak proses - bukan utas, untuk mengalokasikan memori dan 'melakukan sesuatu' - menggunakan memori bersama sebagai lapisan komunikasi. Jika demikian, maka keamanan thread aplikasi dan pustaka Anda tidak penting - yang penting, bagaimanapun, adalah keamanan thread apa pun yang menggunakan alokasi memori bersama! Ini adalah situasi yang berbeda dari menjalankan satu proses dengan banyak utas, dalam hal ini menanyakan tentang keamanan utas operator baru ADALAH masalah yang valid, dan dapat diatasi dengan penempatan baru jika tidak, atau dengan menentukan pengalokasi Anda sendiri.


Anda harus berusaha keras untuk menemukan platform yang mendukung utas tetapi tidak memiliki keamanan utas new . Faktanya, keamanan utas new (dan malloc ) adalah salah satu alasannya sangat lambat.

Sebaliknya, jika Anda menginginkan STL yang aman untuk thread, Anda dapat mempertimbangkan Intel TBB yang memiliki wadah sadar thread (walaupun tidak semua operasi di dalamnya aman untuk thread).


Linux
  1. 10 Penggunaan Simbol atau Operator (!) yang Menakjubkan dan Misterius di Perintah Linux

  2. C++ di Linux tidak mengenali perintah seperti exit() dan printf()

  3. Kompilasi C++ di Windows dan Linux:sakelar ifdef

  1. Linux – Direktori Standar Dan/atau Umum Pada OS Unix/linux?

  2. 7 Contoh Operator Linux Grep OR, Grep AND, Grep NOT

  3. Menyalin pengguna dan kata sandi Linux ke server baru

  1. Bagaimana memberi nama utas di Linux?

  2. Kirim dan Terima file dalam pemrograman soket di Linux dengan C/C++ (GCC/G++)

  3. Macro untuk GCC/G++ untuk membedakan Linux dan Mac OSX?