亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

深入多線程之:雙向信號與競賽的用法分析

2020-01-24 03:19:46
字體:
來源:轉載
供稿:網友

雙向信號和競賽(Two-Way Signaling and Races)
 
Monitor.Pulse方法的一個重要特性是它是異步執行的,這意味著調用pulse方法并不會阻塞自己等待Monitor.Pulse返回。如果任何一個線程在pulsed 對象上等待,它是不會阻塞的,換句話說,調用Monitor.Pulse對程序不會有什么作用,你可以認為Monitor.Pulse方法被忽略了。
這樣Pulse提供了一個單向通信:一個 pulsing線程悄悄的向一個waiting 線程發送信號。
Pulse并不會返回一個值來告訴你waiting線程是否收到信號。

但是有時候我們需要知道waiting線程是否受到信號,例如下面的例子:

復制代碼 代碼如下:

class Race
    {
        static readonly object _locker = new object();
        static bool  _go;
        public static void MainThread()
        {
            new Thread(SaySomething).Start();
            for (int i = 0; i < 5; i++)
            {
                lock (_locker)
                {
                    _go = true;
                    Monitor.PulseAll(_locker); //通知等待的隊列
                }
            }
        }
        static void SaySomething()
        {
            for (int i = 0; i < 5; i++)
            {
                lock (_locker)
                {
                    while (!_go) Monitor.Wait(_locker); //如果_go 為false,那么開始阻塞。
                    _go = false;
                    Console.WriteLine("Wassup?");
                }
            }
        }
    }

期待的輸出:
Wassup?
Wassup?
Wassup?
Wassup?
Wassup?

實際的輸出:

Wassup? (線程等待)
 
在SaySomething方法中,for循環執行到while,此時_go為false,所以Monitor.Wait開始等待。在MainThread中,for循環設置_go為true。然后PulseAll.但是PulseAll方法是異步的。
所以在SaySomething線程被喚醒前,mainThread中的for循環可能已經執行完畢。所以SaySomething方法中的第一個Wait線程收到消息詞是_go為true,所以往下執行,再次將_go字段設置為false。輸出”Wassup?”,但是下次循環由于_go為false,所以需要再次wait.所以實際的輸出打印了一個Wassup,然后開始等待。
我們需要主線程在每一次迭代中如果worker仍然在執行上一個任務,那么主線程阻塞。等到worker執行完畢,那么主線程恢復執行,然后執行迭代。

我們可以增加一個_ready 標志,從而控制主線程在設置_go 標志之前worker線程已經ready了。也就是說主線程在設置_go之前,會等待worker完成任務,然后等待worker將ready設為true,當worker將ready設置為true后,通過pulse來通知主線程。
復制代碼 代碼如下:

class Race
    {
        static readonly object _locker = new object();
        static bool _ready, _go;
        public static void MainThread()
        {
            new Thread(SaySomething).Start();
            for (int i = 0; i < 5; i++)
            {
                lock (_locker)
                {
                    while (!_ready) Monitor.Wait(_locker); //如果worker的ready為false,則等待worker。
                    _ready = false; //重置標志
                    _go = true;
                    Monitor.PulseAll(_locker);
                }
            }
        }
        static void SaySomething()
        {
            for (int i = 0; i < 5; i++)
            {
                lock (_locker)
                {
                    _ready = true; //將ready設置為true
                    Monitor.PulseAll(_locker); //通知主線程,worker已經ready了,可以執行任務了。
                    while (!_go) Monitor.Wait(_locker);
                    _go = false;
                    Console.WriteLine("Wassup?");
                }
            }
        }
    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区久久精品| 亚洲精品美女久久久| 另类少妇人与禽zozz0性伦| 欧美日韩国产丝袜美女| 亚洲精品短视频| 久久成人综合视频| 国产精品成人免费视频| 九九热99久久久国产盗摄| 欧美大人香蕉在线| 丝袜美腿亚洲一区二区| 国产91精品黑色丝袜高跟鞋| 国产在线精品成人一区二区三区| 国产精品日韩在线| 成人免费网站在线| 午夜精品蜜臀一区二区三区免费| 91精品视频在线播放| 久久国产精品久久久久| 中文字幕日韩欧美精品在线观看| 欧美性在线观看| 亚洲精品国产精品久久清纯直播| www国产91| 色午夜这里只有精品| 668精品在线视频| 国产精品国语对白| 精品久久久久久久久久久久久| 国产精品久久一区主播| 狠狠久久五月精品中文字幕| 国产精品免费看久久久香蕉| 欧美成人中文字幕在线| 欧美在线视频免费播放| 中文字幕亚洲字幕| 欧美日韩国内自拍| 中文字幕亚洲欧美日韩高清| 亚洲人成网站在线播| 久热精品视频在线| 亚洲深夜福利网站| 欧美最顶级的aⅴ艳星| 欧美国产日韩一区| 欧美激情综合色| 91久久久久久国产精品| 91精品免费视频| 欧美二区在线播放| 富二代精品短视频| 欧美性猛交xxxx免费看久久久| 国产精品第七影院| 日本不卡免费高清视频| 欧美高清在线视频观看不卡| 38少妇精品导航| 亚洲人成电影网站色| 高清欧美性猛交xxxx黑人猛交| 欧美激情网站在线观看| 欧美视频第一页| 欧美日韩亚洲网| 久久久久久久久久久亚洲| 黑人与娇小精品av专区| 亚洲欧美制服另类日韩| 欧美黑人xxx| 国产69精品99久久久久久宅男| 亚洲第一区在线| 97视频在线观看视频免费视频| 国外成人在线直播| 国产精品第一第二| 亚州欧美日韩中文视频| 日韩中文字幕精品视频| 欧美日韩在线视频观看| 久99久在线视频| 国产视频久久网| 日韩中文有码在线视频| 国产精品视频资源| 亚洲无线码在线一区观看| 在线丨暗呦小u女国产精品| 欧美日韩在线看| 久热爱精品视频线路一| 久久久综合免费视频| 欧美日韩国产成人在线| 欧美在线视频观看免费网站| 欧美性猛交xxxx黑人猛交| 另类美女黄大片| 精品久久久久久久久久久久久| 美日韩精品免费观看视频| 亚洲电影中文字幕| 欧美国产日韩在线| 亚洲第一男人av| 色偷偷噜噜噜亚洲男人的天堂| 久久久久久久国产精品视频| 九九热这里只有精品免费看| 精品久久久久久久久久久久久| 亚洲欧美综合图区| 欧美日韩国产一区中文午夜| 日韩最新在线视频| 亚洲一区二区三区视频播放| 97国产成人精品视频| 高跟丝袜一区二区三区| 日韩精品极品在线观看播放免费视频| 色一情一乱一区二区| 国产精品成久久久久三级| 九九热99久久久国产盗摄| 亚洲欧美国产精品va在线观看| 在线观看免费高清视频97| 黄色一区二区在线观看| 色综合久综合久久综合久鬼88| 亚洲精品日韩久久久| 日本不卡视频在线播放| 久久琪琪电影院| 欧美精品日韩www.p站| 2019中文字幕在线免费观看| 国产精品激情自拍| 欧美激情第99页| 97av在线影院| 91精品久久久久久久久| 66m—66摸成人免费视频| 亚洲欧美日韩中文在线制服| 欧美一级黑人aaaaaaa做受| 亚洲欧美一区二区三区久久| 91av视频在线免费观看| 日韩久久免费电影| 精品亚洲一区二区三区四区五区| 91亚洲精品久久久| 91sa在线看| 欧美日韩国产色视频| 亚洲图片制服诱惑| 亚洲欧美国产高清va在线播| 欧美美女15p| 久久精品视频va| 成人福利网站在线观看11| 国产精品一区二区三区毛片淫片| 国产视频在线观看一区二区| 欧美寡妇偷汉性猛交| 久久久久亚洲精品| 这里只有精品在线观看| 欧美猛交ⅹxxx乱大交视频| 深夜福利一区二区| 性亚洲最疯狂xxxx高清| 欧美成人亚洲成人日韩成人| 亚洲第一免费播放区| 亚洲人成在线观看| 亚洲欧美国产一区二区三区| 久久久久久久久久久免费精品| 国产伦精品一区二区三区精品视频| 欧美另类99xxxxx| 日韩中文字幕精品| 57pao国产成人免费| 国产精品久久久久久亚洲调教| 国产成人综合久久| 色老头一区二区三区| 国产精品久久激情| 亚洲人成网站在线播| 久久伊人精品一区二区三区| 性色av一区二区咪爱| 97国产精品久久| 国产香蕉精品视频一区二区三区| 福利一区视频在线观看| 日韩精品中文字幕有码专区| 日韩成人激情视频| 国产女精品视频网站免费| 国语自产精品视频在线看抢先版图片| 亚洲va欧美va在线观看| 久久久免费观看| 色噜噜狠狠狠综合曰曰曰88av| 45www国产精品网站| 午夜欧美不卡精品aaaaa| 日韩电影在线观看永久视频免费网站| 91av福利视频| 国产视频久久久久久久|