Linux 由不同回调同时访问的相同代码块

Linux 由不同回调同时访问的相同代码块,linux,operating-system,Linux,Operating System,我有一个场景,其中一个函数(代码块)被n个不同的回调函数访问。如果同时有多个回调调用该函数,我必须在函数中放置一个互斥,这样一次只有一个回调可以访问该函数,而另一个回调必须等到关键部分中的第一个回调。 这个设计正确吗?有其他的设计吗?在处理第一个回调时,有没有办法不让第二个回调等待 取决于该函数 它是否修改共享内存? 它是否使用其他显示竞争条件的功能 如果回答是“是”,则必须应用锁定并同步进程 从该函数的开始到结束应用锁将毫无意义。仅在关键部分(即更新(写入)共享数据的代码段)之前和之后应用锁。

我有一个场景,其中一个函数(代码块)被n个不同的回调函数访问。如果同时有多个回调调用该函数,我必须在函数中放置一个互斥,这样一次只有一个回调可以访问该函数,而另一个回调必须等到关键部分中的第一个回调。
这个设计正确吗?有其他的设计吗?在处理第一个回调时,有没有办法不让第二个回调等待

取决于该函数

它是否修改共享内存?
它是否使用其他显示竞争条件的功能

如果回答是“是”,则必须应用锁定并同步进程

从该函数的开始到结束应用锁将毫无意义。仅在关键部分(即更新(写入)共享数据的代码段)之前和之后应用锁。

此类函数称为重入函数,如果使用所有局部变量或实例变量,则可以正常执行。您需要同步使用共享/全局变量的函数或其部分