文章
119
粉丝
12
获赞
0
访问
16.1k
(1)进入区:"if (key == TRUE) "存在错误,修改为"while (key == TRUE) ";
退出区:"lock = TRUE;"存在错误,修改为“lock = FALSE;".
(2)Swap指令为原子操作。但用函数调用语句“newSwap(&key, &lock)”代替指令“swap key, lock”后,因为多个线程可以并发执行newSwap(),newSwap()执行时传递给形参b的是共享变量lock的地址,在newSwap()中对lock既有读操作又有写操作,并发执行时不能保证实现两个变量值的原子交换,从而会导致并发执行的线程同时进入临界区。
登录后发布评论
暂无评论,来抢沙发