【发布时间】:2013-04-22 19:40:05
【问题描述】:
我的程序有三个线程,我正在尝试学习同步和线程安全。下面我概述了不同线程的作用,但我想学习如何使用事件来触发不同线程中的每个进程,而不是无限读取(这给了我并发问题)。
谷歌搜索提供了许多选项,但我不确定在这种情况下最好实现什么 - 您能否指出一个标准方法/事件的方向,我可以学习以最好地实现这一点?
我在 VS 2012 上执行此操作,理想情况下我不会使用外部库,例如提升。
线程 1:接收消息并将其推送到全局队列 @987654321@。
线程2:无限循环(即while(1));等到if (!msg_in.empty()),进行一些处理,然后将其推送到全局map<map<queue<my_class>>> msg_out。
while (1)
{
if (!msg_in.empty())
{
//processes
msg_map[i][j].push(); //i and j are int (irrelevant here)
}
}
线程 3:
while (1)
{
if (msg_map.find(i) != msg_map.end())
{
if (!msg_map[i].find(j)->second.empty())
{
//processes
}
}
}
【问题讨论】:
标签: c++ multithreading winapi events thread-safety