使用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);
感谢您的答复
程序基本上是一个巨大的哈希表这需要通过套接字来自客户端的请求。
每个新的客户端连接都会产生一个新线程,然后可以执行多个操作,特别是查找或插入。查询可以并行进行。但插入需要“重新组合”成一个单独的线程。你可以说查找操作可以在不产生客户端的新线程的情况下完成,但是它们可能需要一段时间才会导致服务器锁定,从而丢失新的请求。该设计试图尽可能减少系统调用和线程创建。
但现在,我知道这是不是安全的我第一次觉得我应该能凑齐东西一起
感谢