針對於現在程式設計執行緒排程要麼mutex ,要麼condition。然後乙個程式那數不清的多少個鎖,在現如今大資料高速處理程式中,不說容易出現死鎖或者各種問題。效能損耗就是一大損失。
消耗時間
舉幾個資料:訪問l1 cache 0.5ns
訪問l2 cache 7ns
記憶體訪問 100ns
mutex加鎖解鎖 100ns。資料**為別人的測試
可以估算mutex 的效能損耗在對資料處理要求較高的環境還是很大的損耗的。
所以程式的設計,依據資料邏輯的特性應該是盡可能的避免鎖的應用
提供一種區別於鎖的執行緒排程使用,更加靈活。目前測試處理效率也更高。原理。。。。略(我也沒研究到核心層~~)
.h
/*
執行緒屬性設定
*/#ifndef __cthread_h__
#define __cthread_h__
#include #include class cthread
~cthread()
void setpriority(int level)
void pause()
void continue()
return;
} sigset_t _waitsig;
bool _runing;
pthread_t _thread_tid;
};#endif
測試** .cpp **隨手敲寫的 ~ 應該沒問題
#include #include #include "thread.h"
class processer:pubic cthread
~processer(){}
int start();
void svc();
};static void * deal(void * arg)
int processer::start()
printf("wait for cli connect in\n");
return 0;
}void processer::svc()}}
int main(int argc,char**argv)
sleep(1);
}return ;
}
使用者空間實現執行緒 核心實現執行緒 執行緒的排程
1 在使用者空間中實現執行緒 1 特點 把整個執行緒包放在使用者空間,核心對執行緒包一無所知。從核心角度考慮,就是按正常的方式管理,即單執行緒程序 存在執行時系統 2 優點 1 使用者級執行緒包可以在不支援執行緒的作業系統上實現。2 進而,它 可以呼叫執行緒排程程式來選擇另乙個要執行的執行緒 儲存該...
執行緒的排程
getpriortiy 返回執行緒的優先順序 setpriority int newpriortiy 改變執行緒的優先順序 執行緒建立時繼承父執行緒的優先順序 第優先順序只是獲得排程的概率低,並非一定是在高優先順序執行緒之後才被呼叫。package threadstudy public class ...
以ThreadStart方式實現多執行緒
使用threadstart委託 這裡先以乙個例子體現一下多執行緒帶來的好處,首先在message類中建立乙個方法showmessage 裡面顯示了當前執行執行緒的id,並使用thread.sleep int 方法模擬部分工作。在main 中通過threadstart委託繫結message物件的sho...