1、讓步
thread::yield()可以介入cpu的排程,使cpu強制放棄執行當前執行緒。
2、休眠
thread:sleep()可以使執行緒停止執行一段時間。
3、優先順序
thread::setpriority()、thread::getpriority(),可以人為的改變到執行緒執行的優先順序,確保緊急的任務先執行。
例項如下:
[cpp]view plain
copy
#include "stdafx.h"
#include
#include
#include "zthread/runnable.h"
#include "zthread/thread.h"
#include "zthread/poolexecutor.h"
using
namespace
zthread;
using
namespace
std;
const
double
pi = 3.141592653589793;
const
double
e = 2.718281828459;
class
******priorities :
public
runnable
~******priorities(){}
friend
ostream& operator << (ostream& os,
const
******priorities& sp)
void
run()
cout << *this
<
if(--ncountdown == 0)
return
; }
} private
: int
ncountdown;
intid;
volatile
double
d;
};
int_tmain(
intargc, _tchar* argv)
cin.get();
} catch
(synchronization_exception& e)
cin.get();
return
0;
}
zthread學習 例項五 非任務物件的生存期
在使用執行緒處理時,必須確保非任務物件在任務需要它們的時候長期保留在活動狀態,如果在任務完成之前,那些被任務使用的非任務物件已經被銷毀,此時會導致非法訪問儲存單元。因此,那些被共享的非任務物件總要在堆中new出來,並且確保沒有其他任務物件引用它時才動態銷毀,此時就是引用計數。zthread庫有乙個引...
zthread學習 例項七 執行緒本地儲存
消除任務在共享資源上發生衝突問題的第二種方法是 消除共享變數,對使用同乙個變數的不同執行緒,可以為同乙個變數建立不同的儲存單元。因此,如果有5個執行緒使用乙個含有變數x的物件,執行緒本地儲存會自動為變數產生5個不同的儲存單元。cpp view plain copy include stdafx.h ...
zthread學習 例項十 執行緒間的協助(一)
使用執行緒在同一時刻執行多個任務時,可以使用互斥鎖來同步多個任務,阻止乙個任務干擾另乙個任務的資源。也就是說,使用互斥鎖來保證同一時刻只允許乙個任務訪問共享資源。執行緒間協作 多個執行緒一起工作來共同解決某個問題 問題的某一部分必須在另一部分被解決之前解決完畢 zthread庫中使用 互斥鎖 並允許...