天天看點

線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

 線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變
線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

執行結果是:changevalue函數線上程1執行的過程中,沒有發送阻塞,等待線程1執行完,而是直接執行。是以沒有進行同步控制的函數可以修改被同步控制的值,如圖1。

線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

圖1 沒有進行同步控制的函數可以修改被同步控制的值

 下面修改一下chagevalue函數,其他部分不變

線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變
線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

執行結果,如圖2。從結果中看出,如果進行同步,則changevalue函數會發生阻塞,直至他可以鎖定mylist。

線程同步傻問題:該被同步的變量沒有用信号量控制,值是否會被改變

圖2 進行同步控制的函數會阻塞

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

轉載:http://www.cnblogs.com/kissazi2/archive/2013/01/02/2841866.html

繼續閱讀