【发布时间】:2010-03-03 04:27:55
【问题描述】:
我有 2 个线程和全局队列,一个线程 (t1) 推送数据,另一个线程 (t2) 弹出数据,我想在不使用函数的情况下同步此操作,我们可以使用 Windows API 使用带有关键部分的队列.
Queue是全局的,想知道怎么同步,是不是通过Queue的锁定地址来完成的?
是否可以使用 Boost Library 来解决上述问题?
【问题讨论】:
-
您不想要暴击部分的任何具体原因?它是最快的 afaik。
-
我想锁定它的地址,以便另一个线程可以在弹出之前等待。使用临界区发生了一些问题,因此决定自行锁定变量。 :)
-
也许最好询问如何修复使用关键部分的队列。无锁队列当然是可能的,但编写正确的无锁代码比使用锁的正确代码要困难得多。
标签: c++ c multithreading visual-c++ critical-section