使用 POSIX 线程和 C++,我有一个“插入操作”,一次只能安全地完成一个。
如果我有多个线程等待使用 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);
感谢您的答复
该程序基本上是一个巨大的哈希表,它通过套接字接收来自客户端的请求。
每个新的客户端连接都会产生一个新线程,然后它可以从中执行多个操作,特别是查找或插入。查找可以并行进行。但是插入需要“重新组合”到一个线程中。您可以说查找操作可以在不为客户端生成新线程的情况下完成,但是它们可能需要一段时间导致服务器锁定,从而丢弃新请求。该设计试图尽可能减少系统调用和线程创建。
但现在我知道我最初认为我应该能够拼凑一些东西的方式并不安全
谢谢