程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++多線程,iterater一部分用auto代替,用到mutex

C++多線程,iterater一部分用auto代替,用到mutex

編輯:C++入門知識

[cpp]   #include <iostream>   #include <chrono>   #include <thread>   #include <mutex>   #include <map>   #include <string>            using namespace std;   map<string, string> g_pages;   mutex g_pages_mutex;      void save_page(const string &url)   {       // simulate a long page fetch       this_thread::sleep_for(chrono::seconds(1));       string result = "fake content";          g_pages_mutex.lock();       g_pages[url] = result;       g_pages_mutex.unlock();   }      int main()    {       thread t1(save_page, "http://foo");       thread t2(save_page, "http://bar");       t1.join();       t2.join();          g_pages_mutex.lock(); // not necessary as the threads are joined, but good style       for (auto iter=g_pages.begin();iter!=g_pages.end();iter++) {           cout << iter->first << " => " << iter->second << '\n';       }       g_pages_mutex.unlock(); // again, good style       system("pause");    }     如果你加個map<string,string>::iterater iter; 實現也是可以的,用了聲明,就可以不用auto了。   上面的也是演示c++11的多線程特性。利用了mutex。(幸虧學了操作系統,明白了線程的互斥概念。)   當然可以更加簡化,類似C#的foreach一樣。(當然我沒怎麼接觸過C#)   修改如下:   [cpp]   for (auto pair:g_pages) {       cout << pair.first << " => " << pair.second << '\n';   }       結果就不寫了,都是一樣的,實現方式不同而已。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved