请问有没有简单的语句放在这两句语句前后另其简单上锁?

现在我在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();

慕容森
浏览 108回答 2
2回答

慕森王

在所有的函数中这样操作:加锁进行任务队列操作完成任务队列操作........或者其他什么操作,反正知道是涉及到两个队列的操作,全部放在锁中间解锁只要别在两个队列操作时分别加锁, 这样就不会有任何问题

千万里不及你

CRITICAL_SECTION m_lock;InitializeCriticalSection(&m_lock);//初始化//加锁 EnterCriticalSection(&m_lock);queue.push()LeaveCriticalSection(&m_lock);EnterCriticalSection(&m_lock);queue.pop();LeaveCriticalSection(&m_lock);
打开App,查看更多内容
随时随地看视频慕课网APP