執行緒程式設計基本知識介紹
執行緒程式設計基本知識介紹,常用執行緒函式列舉
與執行緒相關的函式可以分類歸結為以下幾個部分:
1)執行緒管理函式,包括執行緒的建立,退出,函式為
pthread_create,pthread_join,,pthread_exit,,pthread_self, pthread_cancel,
pthread_setcancelstate, pthread_setcanceltype, pthread_testcancel,
pthread_cleanup_push, pthread_cleanup_pop
2) 執行緒同步處理函式
pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_destory
pthread_cond_init,pthread_cond_wait,pthread_cond_destory, pthread_attr_sedetachstate
pthread_attr_init, pthread_attr_desotry等
3) 執行緒資料處理函式
pthread_key_create, pthread_getspecific, pthread_setspecific
4) 執行緒排程函式
pthread_attr_setschedpolicy,pthread_attr_getschedpolicy, pthread_attr_setschedparam,
pthread_attr_getschedparam
以上只是介紹一些常用到執行緒函式,還有許多函式,不再一一枚舉,對於函式的引數、使用,請參考系統的函式手冊。以下給出乙個最簡單的程式設計例子,同時說明在函式程式設計中正確退出執行緒的重要性,尤其是在應用程式需常見大量執行緒的情況下。
在aix系統中編譯連線posix的執行緒函式,使用編譯器cc_r, xlc_r, 或xlc_r, 可根據應用程式語言的不同選擇相匹配的編譯器。
程式norexit.c執行緒正確退出並釋放資源,原碼如下:
#include
#include
void *thfunc(void *arg)
int main(int argc, char **argv)
--else /* end if else */
} /* end for */
sleep(5);
printf("exit the main flow/n");
system(commandstr);
return 0;
}編譯連線此程式:
xlc_r –o norexit norexit.c
執行norexit程式輸出內容如下:
# ./norexit
before create thread, the resource in this proccess:
root 19730 0.0 0.0 1108 1120 pts/0 a 02:51:33 0:00 ./norexit
sequence number : 0
in thread, thread id : 258
root 19730 0.0 0.0 1160 1164 pts/0 a 02:51:33 0:00 ./norexit
thread id : 258 is exited
sequence number : 1
in thread, thread id : 259
root 19730 0.0 0.0 1180 1184 pts/0 a 02:51:33 0:00 ./norexit
thread id : 259 is exited
sequence number : 2
in thread, thread id : 260
root 19730 0.0 0.0 1180 1184 pts/0 a 02:51:33 0:00 ./norexit
thread id : 260 is exited
sequence number : 3
in thread, thread id : 261
root 19730 0.0 0.0 1180 1184 pts/0 a 02:51:33 0:00 ./norexit
thread id : 261 is exited
sequence number : 4
in thread, thread id : 262
root 19730 0.0 0.0 1180 1184 pts/0 a 02:51:33 0:00 ./norexit
thread id : 262 is exited
exit the main flow
root 19730 0.0 0.0 1180 1184 pts/0 a 02:51:33 0:00 ./norexit
從上面的輸出結果,可以看出,norexit對記憶體的使用基本時穩定的,下面給出的例子是
執行緒未退出的情況下記憶體使用情況,程式名為unnorexit.c
#include
#include
void *thfunc(void *arg)
int main(int argc, char **argv) /* end for */
-sleep(5);
-printf("exit the main flow/n");
-system(commandstr);
-return 0;
}編譯連線unnorexit.c程式
xlc_r –o unnorexit unnorexit.c
執行程式unnorexit,輸出結果如下:
# ./unnorexit
before create thread, the resource in this proccess:
root 18818 0.0 0.0 1112 1120 pts/0 a 02:56:54 0:00 ./unnorexit
sequence number : 0
in thread, thread id : 258
root 18818 0.0 0.0 1164 1164 pts/0 a 02:56:54 0:00 ./unnorexit
sequence number : 1
in thread, thread id : 515
root 18818 0.0 0.0 1188 1184 pts/0 a 02:56:54 0:00 ./unnorexit
sequence number : 2
in thread, thread id : 772
root 18818 0.0 0.0 1204 1196 pts/0 a 02:56:54 0:00 ./unnorexit
sequence number : 3
in thread, thread id : 1029
root 18818 0.0 0.0 1220 1208 pts/0 a 02:56:54 0:00 ./unnorexit
sequence number : 4
in thread, thread id : 1286
root 18818 0.0 0.0 1236 1220 pts/0 a 02:56:54 0:00 ./unnorexit
exit the main flow
root 18818 0.0 0.0 1236 1220 pts/0 a 02:56:54 0:00 ./unnorexit
從上面的輸出結果,可以看到,隨著執行緒的建立,記憶體使用逐漸增多。
總結以上部分,簡單介紹了posix的基本知識,即便程架構,詳細的資訊請參考aix系統
程式設計手冊及posix程式設計手冊。
redis基本知識介紹
redis相對memcache來說,支援了更多的資料型別,在使用場景上面無疑是更加的便捷 string 可以儲存任何形式的字串,內部實現結構有int,sds dynamisc string 當值為整型時,使用int結構存放,非整型時使用sds儲存 list 當list的節點小於配置 hash max...
Zookeeper基本知識介紹
1 什麼是zookeeper zookeeper是乙個分布式開源框架,提供了協調分布式應用的基本服務,它向外部應用暴露一組通用服務 分布式同步 distributed synchronization 命名服務 naming service 集群維護 group maintenance 等,簡化分布式...
shell程式設計基本知識點介紹
bash簡介 bash 命令列型別的shell。shell 計算機和使用者的互動介面。執行任何乙個指令碼都是啟動乙個新的bash去執行。乙個簡單的bash程式例子 是用來說明這個檔案的型別的 bin bash 表明這個是bash程式 echo 語句的功能是把 echo 後面的字串輸出到標準輸出中去 ...