现在我在c++ project里面定义了一个队列。 并且有两个函数,一个函数负责进队列,一个函数负责读队列。 第一个进队列的函数,是已经存在dll,并且我可以直接调用的callback函数,作用就是一有新信息传送到电脑,就会把数据塞进队列。 我唯一做的编辑就是在callback里面加入queue.push。 第二个queue.pop是我自己写的一个函数,并且完成了一些数据处理。 现在复杂的就是,我并没有在c++ 内定义线程,而是把这个工程生成dll,并且在c#内调用这个dll. 用一个timer去启动第二个函数, 第一个函数由于在c++内已经定义好了,也是一个随时会启动的函数。所以在一定意义上,他们就是个多线程。 现在为了queue的数据安全,我需要在c++里加入mutex,所以我现在要对queue上锁,请问我应该用什么语句。函数1里是queue.push()函数2里是queue.pop();
2 回答
慕森王
TA贡献1777条经验 获得超3个赞
在所有的函数中这样操作:
加锁
进行任务队列操作
完成任务队列操作
........或者其他什么操作,反正知道是涉及到两个队列的操作,全部放在锁中间
解锁
只要别在两个队列操作时分别加锁, 这样就不会有任何问题
千万里不及你
TA贡献1784条经验 获得超9个赞
CRITICAL_SECTION m_lock;
InitializeCriticalSection(&m_lock);//初始化
//加锁
EnterCriticalSection(&m_lock);
queue.push()
LeaveCriticalSection(&m_lock);
EnterCriticalSection(&m_lock);
queue.pop();
LeaveCriticalSection(&m_lock);
- 2 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消