我有一个场景,其中一个函数(代码块)由n个不同的回调函数访问。如果同时有多个回调函数调用该函数,我必须在函数中放置一个互斥量,这样一次只有一个回调可以访问它,另一个回调必须等到临界区的第一个回调函数。 这是正确的设计吗?有没有替代设计?有没有办法在第一个回调被处理时不进行第二次回调等待?
答案 0 :(得分:1)
取决于该功能。
是否修改共享内存?
它是否使用其他具有竞争条件的功能?
如果答案是肯定的,那么您必须应用锁定并同步进程。
从开始到结束该功能应用锁定没有多大意义。仅在关键部分之前和之后应用锁定(即共享数据更新(写入)的代码片段。