- 论坛徽章:
- 0
|
回163楼, 忍不住,又插一句:
闲着没事可做,没什么别的意途。
111 楼那程序并不能说明什么, 我将 111 楼那个程序的 inc_count2() ,加了几条 printf() 语句
- void * inc_count2(int id)
- {
- while(1) {
- printf("i = %d\n, i); /* #1 */
- printf("d = %d\n",d); /* #2 */
- i = 50;
- b = i;
-
- printf("i = %d\n", i); /* #3 */
- printf("d = %d\n",d); /* #4 */
-
- if (b != i) {
- printf("crashed\n");
- exit(1);
- }
- }
- }
复制代码
结果是:
- i = 10
- b = 0
- ... ...
- i=50
- b=50
- i = 50
- b = 50
- ... ...
- crashed
复制代码
在第1,2条 printf 输出了 i = 10 b = 0 的结果
在第2第printf 到 最后 crashed 信息输出之间全都是
i = 50
b = 50
说明:在两2条 printf() 和 printf("crashed\n" 语句之前,i 和 b 是相等的,
经过一些时间后,出现了不相等情况,那是在第4条 printf() 语句之后的事情了。
i = 50; b = i; 这两条赋值语句并没有被中断
那么,这里是否可以初步认为,这两条赋值语句的具有原子性呢 |
|