使用POSIX線程& C++,我有一個「插入操作」,它只能一次安全地完成。pthread_join - 多線程等待
如果我有多個線程在等待使用pthread_join插入,然後在完成時產生一個新線程 。它們是否都會一次收到「線程完成」信號併產生多個插入,或者可以安全地假設首先收到「線程完成」信號的線程會產生一個阻塞其他線程的新線程來創建新線程。
/* --- GLOBAL --- */
pthread_t insertThread;
/* --- DIFFERENT THREADS --- */
// Wait for Current insert to finish
pthread_join(insertThread, NULL);
// Done start a new one
pthread_create(&insertThread, NULL, Insert, Data);
感謝您的答覆
程序基本上是一個巨大的哈希表這需要通過套接字來自客戶端的請求。
每個新的客戶端連接都會產生一個新線程,然後可以執行多個操作,特別是查找或插入。查詢可以並行進行。但插入需要「重新組合」成一個單獨的線程。你可以說查找操作可以在不產生客戶端的新線程的情況下完成,但是它們可能需要一段時間纔會導致服務器鎖定,從而丟失新的請求。該設計試圖儘可能減少系統調用和線程創建。
但現在,我知道這是不是安全的我第一次覺得我應該能湊齊東西一起
感謝