程序id在整個系統中是唯一的,但執行緒id只在它所屬的程序環境中有效。
執行緒id用pthread_t資料型別表示,所以可移植的作業系統實現不能把它作為整數來處理,因此必須使用函式來對兩個執行緒id進行比較
int pthread_equal(pthread_t tid1, pthread_t tid2);
//引數:兩個執行緒的執行緒id
//返回值:相等則返回非0值,否則返回0
執行緒也可以通過呼叫pthread_self函式獲得自身執行緒id
pthread_t pthread_self(void);
//返回值:呼叫執行緒的執行緒id
當執行緒需要識別以執行緒id作為標識的資料結構時,pthread_self函式可以與pthread_equal函式一起使用。
應用:比如:主線程可能把工作任務放在乙個佇列中,用執行緒id來控制每個工作執行緒處理哪些作業,每個執行緒並不是任地處理從佇列頂端取出的作業,每個工作執行緒只能移出標有自己執行緒id的作業。
可以使用pthread_create函式建立新執行緒。
int pthread_create(
pthread_t *thread, //返回執行緒id
const pthread_attr_t *attr, //設定執行緒的屬性,null為預設屬性
void *(*start_routine)(void*), //縣城啟動後要執行的函式
void *arg); //傳給執行緒啟動函式的引數
//返回值:成功返回0,失敗返回錯誤碼
注意:
pthread_create和pthread_self的用法:
#include#include#includevoid* route(void*)
int main()
sleep(1); //讓主線程休眠一秒鐘,sleep函式的標頭檔案是unistd.h
例子:
#include#include#includeusing namespace std;
void print(const char* s)
void* route(void* )
int main()
print("main thread: ");
sleep(1);
return 0;
}
注意: 執行緒控制代碼和執行緒標識
handle的引用計數和有關的屬性,handle是os標識程序和執行緒的東西,但是使用者也可以用這個來標識程序和執行緒,對其操作 createthread api 用於建立執行緒。api 返回同時執行緒控制代碼,並通過引數得到執行緒識別符號 id 執行緒控制代碼有完全訪問權建立執行緒物件。執行執行緒...
執行緒停止 標識位
package com.qiliang.demo06 標誌位停止執行緒 1.建議執行緒正常停止,利用次數,不建議死迴圈 2.建議使用標誌位,設定乙個標誌位 3.不要使用stop或者destroy等過時的方法或jdk不建議使用的方法 public class stopthreadtest implem...
執行緒 建立執行緒
重寫run public void run 例項化物件 類名 t new 類名 設定屬性 名字,優先順序 優先順序是1 10的整數,1最小,預設是5 優先順序越高,該執行緒占用cpu的時間 機會 越多。id是自動生成 t.setname 執行緒1 t.setpriority 4 啟動執行緒,預設呼叫...