1. 程式人生 > >C++ Boost 多執行緒(六),執行緒的同步

C++ Boost 多執行緒(六),執行緒的同步

#include <iostream>
#include <boost/thread.hpp>

using namespace std;

boost::mutex mutex;

void func1(int id)
{
	mutex.lock();
	cout<<"thread #"<<id<<endl;
	for (int i=1; i<6; ++i)
	{
		cout<<i<<" ";
	}
	cout<<endl;
	mutex.unlock();
}

int main()
{

	boost::thread t1(func1, 11);
	boost::thread t2(func1, 22);
	boost::thread t3(func1, 33);
	boost::thread t4(func1, 44);
	boost::thread t5(func1, 55);
	t1.join();
	t2.join();
	t3.join();
	t4.join();
	t5.join();


	system("pause");
	return 0;
}

#include <iostream>
#include <boost/thread.hpp>

using namespace std;

boost::mutex mutex;
int k=0;

void decrement()
{
	//離開作用域後可以自動釋放的鎖
	boost::unique_lock<boost::mutex> lock(mutex);
	for (int i=0; i<=100; ++i)
	{
		k-=i;
	}
	cout<<"after decrement k="<<k<<endl;
}

void increment()
{
	boost::unique_lock<boost::mutex> lock(mutex);
	for (int i=0; i<=100; ++i)
	{
		k+=i;
	}
	cout<<"after increment k="<<k<<endl;
}

int main()
{

	boost::thread t1(increment);
	boost::thread t2(decrement);
	t1.join();
	t2.join();

	system("pause");
	return 0;
}

相關推薦

C++ Boost 執行()執行同步

#include <iostream> #include <boost/thread.hpp> using namespace std; boost::mutex mutex

C++ Boost 執行(二)執行的引數傳遞

#include <iostream> #include <boost/thread.hpp> using namespace std; void func1(const i

C++ Boost 執行(一)執行的建立

#include <iostream> #include <boost/thread.hpp> using namespace std; void func() { cou

C++ Boost 執行(九)生產者和消費者問題

#include <iostream> #include <boost/thread.hpp> using namespace std; class Account { pu

Python中的執行程式設計執行安全與鎖(一) 聊聊Python中的GIL 聊聊Python中的GIL python基礎之執行鎖機制 python--threading執行總結 Python3入門之執行threading常用方法

1. 多執行緒程式設計與執行緒安全相關重要概念 在我的上篇博文 聊聊Python中的GIL 中,我們熟悉了幾個特別重要的概念:GIL,執行緒,程序, 執行緒安全,原子操作。 以下是簡單回顧,詳細介紹請直接看聊聊Python中的GIL  GIL:&n

Python中的執行程式設計執行安全與鎖(二) Python中的執行程式設計執行安全與鎖(一)

在我的上篇博文Python中的多執行緒程式設計,執行緒安全與鎖(一)中,我們熟悉了多執行緒程式設計與執行緒安全相關重要概念, Threading.Lock實現互斥鎖的簡單示例,兩種死鎖(迭代死鎖和互相等待死鎖)情況及處理。今天我們將聚焦於Python的Threading模組總結和執行緒同步問題。

Linux c 執行屬性執行優先順序的修改

執行緒屬性的設定,網上找的文章總感覺不夠全面,還是結合man手冊檢視。 執行緒屬性設定,分兩個方式,一種是在建立之前,通過pthread_attr_t 結構體傳入,另一種,是執行緒建立完已經在執行時,通過部分函式設定。一般常見的是建立執行緒時傳NULL,使用預設屬性,後續執

C++11併發學習之執行池的實現

為什麼要使用執行緒池?       目前的大多數網路伺服器,包括Web伺服器、Email伺服器以及資料庫伺服器等都具有一個共同點,就是單位時間內必須處理數目巨大的連線請求,但處理時間卻相對較短。       傳統多執行緒方案中我們採用的伺服器模型則是一旦接受到請求之後,即建立

java 執行基礎之一:執行建立執行狀態管理

import java.lang.Thread.State; public class Calculator implements Runnable {     private int number;     public Calculator(int number) {         this.numb

Python中的執行程式設計執行安全與鎖(一)

1. 多執行緒程式設計與執行緒安全相關重要概念 在我的上篇博文 聊聊Python中的GIL 中,我們熟悉了幾個特別重要的概念:GIL,執行緒,程序, 執行緒安全,原子操作。 GIL:  Global Interpreter Lock,全域性直譯器鎖。為了解決多執行緒之間資料完整性和狀態同步的問題,設計為在

day 34 GIL鎖執行佇列執行池及執行池回撥函式

一 . GIL鎖   GIL鎖是python程式碼轉直譯器程式碼的一個鎖         雖然我們加鎖的原因是因為要保護安全性從而降低了效率,但是加鎖也會出現安全性的問題!         二 . 執行緒佇列   import queue   三種佇列形式

執行的排程(執行休眠執行讓步執行插隊)

程式中的多個執行緒是併發執行的,某個執行緒若想被執行必須要得到CPU的使用權,Java虛擬機器會按照特定的機制為程式中的每個執行緒分配CPU的使用權,這種機制被稱作執行緒的排程。兩種執行緒排程模式:分時

linux查詢消耗cpu最高的執行(jstack)記憶體佔用最大執行(jmap)執行gc情況(jstat)

1.linux下    top  命令查詢查詢消耗cpu最高的程序id 2. 將程序資訊匯出到日誌檔案中   ./jstack 程序id >stack.log 3.查詢程序id下消耗cpu最高的執行緒id  top -Hp  程序id               執行

Linux下C語言實現C/S模式程式設計(附原始碼執行截圖)

由標題可知,這篇部落格主要講如何用C語言實現一個C/S模式的程式。 主要功能:時間回送。 客戶機發出請求,伺服器響應時間,並返回伺服器時間,與客戶機進行同步。 廢話不多說,下面直接貼出原始碼。 程式碼如下: #include <stdio.h> #include

Qt QThread 執行建立執行同步,執行通訊 例項

1.  繼承QThread, 實現run()方法, 即可建立執行緒。 2. 例項1 程式碼 myThread.h #ifndef MYTHREAD_H #define MYTHREAD_H #include <QThread> class myThrea

Java執行():執行

        自JDK5之後,Java推出了一個併發包,java.util.concurrent,在Java開發中,我們接觸到了好多池的技術,String類的物件池、Integer的共享池、連線資料庫的連線池、Struts1.3的物件池等等,池的最終目的都是節約資源,以更小

守護執行執行執行ThreadLocal

守護執行緒   守護執行緒是一類特殊的執行緒,它和普通執行緒的區別在於它並不是應用程式的核心部分 ,當一個應用程式的所有非守護執行緒終止執行時,即使仍然有守護執行緒在執行,應用程式 也將終止,反之,只要有一個非守護執行緒在執行,應用程式就不會終止。守護執行緒一般被 用於在後

uc筆記11---執行管理執行函式:建立、等待、獲取、比較、終止、取消, 執行屬性

1.    基本概念     1)執行緒就是程式的執行路線,即程序內部的控制序列,或者說是程序的子任務。     2)執行緒,輕量級,不擁有自己獨立的記憶體資源,共享程序的程式碼區、資料區、堆區(注意沒有棧區)、     環境變數和命令列引數、檔案描述符、訊號處理函式、當前

《深入探索C++物件模型》第執行語意學

#include <iostream> class X { public: bool operator==(const X& o) { return ((this == &o)?true:false); } ~X() { std::co

java中執行安全執行死鎖執行通訊快速入門

一:多執行緒安全問題 ###1 引入 /* * 多執行緒併發訪問同一個資料資源 * 3個執行緒,對一個票資源,出售 */ public class ThreadDemo { public static void main(String[