我现在正在练习锁定,信号量,互斥...
我尝试实现简单的代码,以便使用互斥锁迭代地添加1。
这是我的代码。
[A.C]
for(int i=0; i<1000;i++){
acquire(&lock);
ADD1("count.txt"); // count.txt is shared memory
temp=Load("count.txt") // Load func get number
printf("\n %d",temp);
release(&lock);
}
[B.c]也与A完全相同。
我编译了A.c和B.c
gcc A.c -o A
gcc B.c -o B
并执行
./A & ./B
我期望的是提升印刷,例如
1
2
3
4
..
1999
2000
但是有问题,它正确计算到2000年
但是..它不是升序......
4
5
6
7
1
...
234
235
...
223
...
1999
2000
认为这很奇怪,因为如果我能看到'2000'那么这意味着互斥锁确实有效!
但为什么打印日志不是升序...?
p.s /抱歉,如果你不能理解...... 由于我使用谷歌翻译,我的不好