C++ 如何在多个线程之间同步。只有一个是写作
进程在其生命周期内有1个主线程和1到50个其他工作线程。 当主线程接受新连接时,它会将其保存在boost::unordered_映射中,让我们称之为“newconcontainer”。工作线程会不时检查“new con container”中的新连接。出于同步目的,有一个boost::mutex。当主线程写入“newconcontainer”时,它会锁定这个互斥锁。工作线程在检查此容器时也会锁定互斥锁C++ 如何在多个线程之间同步。只有一个是写作,c++,multithreading,boost,concurrency,locking,C++,Multithreading,Boost,Concurrency,Locking,进程在其生命周期内有1个主线程和1到50个其他工作线程。 当主线程接受新连接时,它会将其保存在boost::unordered_映射中,让我们称之为“newconcontainer”。工作线程会不时检查“new con container”中的新连接。出于同步目的,有一个boost::mutex。当主线程写入“newconcontainer”时,它会锁定这个互斥锁。工作线程在检查此容器时也会锁定互斥锁 工作线程有没有办法不锁定互斥锁并从“新con容器”安全地读取线程?工作者线程在套接字上进行实时
工作线程有没有办法不锁定互斥锁并从“新con容器”安全地读取线程?工作者线程在套接字上进行实时操作,因此锁定互斥的性能。 < P>如果您有一个写入器,多个读者考虑使用: 类boost::shared_mutex提供了 多读卡器/单写卡器互斥锁 您不应该通过工作线程轮询“newconcontainer”,而应该使用一个条件变量让工作线程阻塞,直到其中一个线程有事情要做。这将减少争用,从而减少锁的开销 您还可以对容器进行分区。不要只有一个容器,而是使用更多的容器,并为每个容器分配一组固定的线程。然后,主线程将每个新连接推送到不同的容器 问候
Torsten一个工作线程如何决定应该处理哪个新连接,下一个工作线程如何知道不在同一个连接上工作?goog:许多读写线程的线程应该调用lock();读线程应该在共享互斥体上调用lock_shared()。是吗?@Didar_Uranov:这里有一些关于共享锁的好例子:这绝对是我需要的!谢谢!