我有一个场景,一个函数(代码块)被n个不同的回调函数访问。如果同时有多个回调调用函数,我必须在函数中放一个互斥锁,这样一次只有一个回调可以访问这个互斥锁,而另一个回调必须等到临界区的第一个互斥锁。这个设计正确吗?有没有其他的设计?有没有办法在处理第一个回调时不让第二个回调等待?
发布于 2017-10-09 15:15:14
取决于该函数。
它会修改共享内存吗?
它是否使用了其他具有竞争条件的函数?
如果答案是肯定的,那么您必须应用锁定并同步进程。
从头到尾应用该函数的锁没有什么意义。仅在临界区(即更新(写入)共享数据的代码段)之前和之后应用锁。
https://stackoverflow.com/questions/46639928
复制相似问题