|
我曾经在windows下用masm实现互斥,很简单,因为所有操作是针对寄存器的,在CPU的最小时间片中只用xchg来达到互斥,主要代码如下:
db i;//定义一个字节,用来做互斥边界触点
mov al,1;//寄存器al为1
xchg al,i;//把i和al交换,这条命令是机器一个时间片就能完成的,在这个时间片内,机器不会执行任何其它代码
test al,1;//测试是否是1,是1则已经被锁,不是1则被当前代码锁定了,因为i已经是1了
jz 锁定
通过判断i的值,可以对其它需要保护的数据进行单线访问,我感觉很容易实现,可到linux下,好象不同的机器(x86,sparc....),C对汇编的支持不一样?不知道能不能象上面那样实现一个
我是两进程(不是线程)间的共享数据的写权限互斥问题,怀疑mute不能用于多进程,我该怎么做
不知道我说清楚没有,希望有兴趣的朋友说两句 |
|