<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C++多線程之可重入鎖

      #include<iostream>
      #include<thread>
      #include<mutex>
      using namespace std;
      recursive_mutex re;
      void task1()
      {
                  re.lock();
                     cout << "處理任務1中..." << endl;
                     std::this_thread::sleep_for(1s);
                     re.unlock();
      }
      void task2()
      {
                  re.lock();
                     cout << "處理任務2中..." << endl;
                     std::this_thread::sleep_for(1s);
                     re.unlock();
      }
      class ThreadBase
      {
      public:
              virtual void Start()
              {
                     is_exit = false;
                     th = std::thread(&ThreadBase::Main,this);
              }
              virtual void Stop()
              {
                     is_exit = true;
                     Wait();
              }
              virtual void Wait()
              {
                     if (th.joinable())
                     {
                             th.join();
                     }
              }
              bool get_exit()
              {
                     return is_exit;
              }
              virtual void Main() = 0;
              ThreadBase(int _i):i(_i) {}
              virtual ~ThreadBase() {}
              int i;
      private:
              std::thread th;
              bool is_exit;
      };
      class MyThread:public ThreadBase
      {
      public:
              MyThread(int i):ThreadBase(i) {}
              ~MyThread() override {}
              void Main() override
              {
                     for (;;)
                     {
                             //如果不是可重入鎖,那么得先開鎖然后才能執行task1,否則會造成死鎖
                             //但是如果開鎖,也就是在一個線程執行任務時,另一個線程也進來了,如果另一個線程執行了一會就結束了,肯定會
                             //釋放鎖,而實際上線程一的任務還沒執行完
                             re.lock();
                             cout << "線程" << i << "拿到了鎖" << endl;
                             task1();
                             task2();
                             re.unlock();
                             std::this_thread::sleep_for(1ms);
                     }
              }
      };
      int main(int argc,char* argv[])
      {
                     MyThread th_one(1);
                     th_one.Start();
                     th_one.Wait();
              
              getchar();
              return 0;
      }
      posted @ 2021-03-13 19:41  sunshine_gzw  閱讀(2695)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲AV无码AV在线影院| 人妻丝袜无码专区视频网站 | 国产精品久久国产精麻豆| 久久99国产精品久久99小说| 最新中文字幕国产精品| 亚洲女女女同性video| 深夜精品免费在线观看| 一本大道久久东京热AV| 又大又黄又粗高潮免费| 福利视频一区二区在线| 日韩视频中文字幕精品偷拍| 成人精品天堂一区二区三区| 人妻系列无码专区69影院| 国产极品视频一区二区三区| 国产精品免费中文字幕| 她也色tayese在线视频| 在线播放国产精品三级网| 性人久久久久| 国产精品亚洲综合久久小说| 亚洲成人av在线资源网| 国产美女高潮流白浆视频| 99久久精品国产综合一区| 国产精品亚洲二区亚瑟| 精品国产午夜福利在线观看 | 日韩一区二区三区在线视频| 亚洲一区精品伊人久久| 五月天丁香婷婷亚洲欧洲国产| av在线网站手机播放| 国产无人区码一区二区| 亚洲高请码在线精品av| 精品素人AV无码不卡在线观看| av在线播放无码线| 亚洲成人av免费一区| 新田县| 狠狠躁夜夜躁人人爽天天69| 午夜DY888国产精品影院| 久久中文字幕一区二区| 国产jizzjizz视频| 一区二区三区四区在线不卡高清| 久久精品蜜芽亚洲国产AV| 精品久久人人做爽综合|