我在Linux中实现了一个新的系统调用:
void do_test(unsigned char *input, unsigned char *output){
unsigned char *pt;
// do something complex with pt;
}do_test系统调用由运行在Linux中的许多进程调用。
我是否应该担心多个进程具有共享变量*pt的竞争条件(即,它处于不一致的状态)?或者,每个进程都有自己版本的内核代码,因此进程A中使用的*pt与进程B中使用的不同?
如果有竞态条件,我该如何锁定它?
发布于 2015-01-07 09:11:32
unsigned char *pt;是一个局部变量,它不是共享的,因为每个进程都有自己的syscall堆栈。它们共享相同的代码,但运行在不同的堆栈上。
所以不,如果你坚持使用局部变量,你就不需要任何锁,也不会冒任何数据竞争的风险。
https://stackoverflow.com/questions/26441024
复制相似问题