mutex.h
namespace muduo
;class capability("mutex") mutexlock : noncopyable
~mutexlock()
// must be called when locked, i.e. for assertion
bool islockedbythisthread() const
void assertlocked() const assert_capability(this)
// internal usage
void lock() acquire()
void unlock() release()
pthread_mutex_t* getpthreadmutex() /* non-const */
private:
friend class condition;
class unassignguard : noncopyable
~unassignguard()
private:
mutexlock& owner_;
};void unassignholder()
void assignholder()
pthread_mutex_t mutex_;
pid_t holder_;
};// use as a stack variable, eg.
// int foo::size() const
// class scoped_capability mutexlockguard : noncopyable
~mutexlockguard() release()
private:
mutexlock& mutex_;
};} // namespace muduo
// prevent misuse like:
// mutexlockguard(mutex_);
// a tempory object doesn't hold the lock for long!
#define mutexlockguard(x) error "missing guard object name"
#endif // muduo_base_mutex_h
mutex.h中有對mutex的封裝的mutexlock類,還有基於mutexlock封裝的mutexlockguardc++11中mutex,c++11中也對mutex進行封裝,使用方式和muduo庫差不多,同時c++11中也有類似mutexlockguard的實現,下面我來介紹一下c++11中基於mutex封裝的lock_guard和unique_lock;
#include #include #include #include #include std::mutex my_lock;
void add(int &num, int &sum)
else
//sleep(100);
}
}int main()
std::for_each(ver.begin(), ver.end(), std::mem_fn(&std::thread::join)); //join
std::cout << sum << std::endl;
}
#include // std::cout
#include // std::thread
#include // std::mutex, std::unique_lock
#include std::mutex mtx; // mutex for critical section
void add(int &num, int &sum)
else
lock.unlock(); //釋放鎖
sleep(10);
lock.lock();//再次上鎖,最後一次上鎖可以不用解鎖
sum += num; }}
int main()
std::for_each(ver.begin(), ver.end(), std::mem_fn(&std::thread::join)); //join
std::cout << sum << std::endl;
return 0;
}
執行緒學習9 Mutex類
互斥 在作業系統中,許多執行緒常常需要共享資源,而這些資源往往要求一次只能為乙個執行緒服務 排他性 這種排他性地使用共享資源稱為執行緒間的互斥。執行緒互斥實質上也是同步,可以看做一種特殊的執行緒同步。mutex類 執行緒的互斥常用mutex類實現,利用它可以對資源進行獨占性訪問。與monitor類相...
muduo庫學習篇 Thread類學習
多執行緒程式設計在任何語言中基本都是乙個繞不開的話題,如果我們想要發揮計算機多核的優勢,提高程式的響應速度,就一定要使用到多執行緒程式設計技術。因此muduo庫一定少不了thread的封裝,接下來我們開始學習muduo庫thread類的封裝。如果讓我自己設計乙個thread類的話我能想到的有哪些 上...
C IO庫學習篇
io庫型別和標頭檔案 頭檔案型別 iostream istream 從流中讀取資料 ostream 向流寫入資料 iostream 讀寫流 fstream ifstream 從檔案中讀取資料 ofstream 檔案寫入資料 fstream 讀寫檔案 sstream istringstream 從st...