linux線程的函數整理

6人阅读 评论(0) 收藏 举报
分类:

線程(thread)

線程創建

int pthread_create(pthread_t *,const pthread_attr_t *,void *(*)(void *),void *);          //類型

pthread_create(&thread_id,&thread_attribute,&thread_fun,&fun_arg);                //形參名

thread_id                         線程id(類型為phread_t)或句柄(類型為phread_t的數組)

thread_attribute            線程屬性(傳遞NULL指針即為標準默認值)

thread_fun                      線程函數名

fun_arg                            函數參數傳入,只可傳入一個參數

errorcode(返回值)        pthread_create的返回值,如果創建操作失敗,將會返回非零值

線程結束

pthread_exit(void* retVal)

retVal                               返回retVal給創建此線程的線程

線程属性設置

pthread_attr_t                                                                    //線程屬性數據結構

pthread_attr_init(pthread_attr_t *attr)                        //初始化屬性結构

pthread_attr_setXXX()                                                      //設置屬性值

pthread_attr_destroy(pthread_attr_t *attr)                //撤除屬性結构

pthread_attr_setstacksize(&my_attributes,(size_t)8192);            //設置屬性棧尺寸

size_t my_stack_size;pthread_attr_getstacksize(&my_attributes, &my_stack_size);                 //获得屬性棧尺寸

線程合併與分離 (阻塞主線程,直到子線程完成並回收其資源)

合併有返回值, 分離沒有返回值

pthread_join(pthread_t thread, void **status)                      //合併(線程, 線程的返回值)

pthread_detach(pthread_t thread)                                //分離(線程)

取得線程id

pthread_t pthread_self()

比較線程

int pthread_equal(pthread_t t1, pthread_t t2)

線程讓出cpu

void sched_yield()

 

屏障(barrier) (同步)

線程到逹屏障會等待,直到所有線程都到逹屏障

pthread_barrier_t b;                                     //屏障數據結構

pthread_barrier_init(&b,NULL,3);             //初始化 (屏障, 屬性, 線程數)

pthread_barrier_wait(&b);                          //線程等待屏障

 

互斥(mutex)

多個線程共享變量,需要使用鎖來限制讀寫

pthread_mutex_lock()                       //上鎖

若可上鎖則直接上鎖,不可上鎖則阻塞至可以上鎖為止

pthread_mutex_trylock()                  //嘗試上鎖

若可上鎖則直接上鎖,不可上鎖則直接返回

pthread_mutex_unlock()                  //解鎖

pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER               //靜態初始化

pthread_mutex_t *mutex;  

pthread_mutex_init(pthread_mutex_t*,pthread_mutexattr_t*)                      //動態初始化

pthread_mutexattr_t                         //互斥屬性數據結構

pthread_mutexattr_destroy(pthread_mutexattr_t*attr)                        //銷毀互斥屬性

pthread_mutex_destroy()                 //銷毀互斥

RecursiveMutex  (遞歸互斥)

 

條件變量(Condition variable)

操作會先等待一個信號才執行

pthread_cond_t                       //條件變量類型

pthread_cond_t cond= PTHREAD_COND_INITIALIZER;                            //靜態初始化

pthread_cond_init(pthread_cond_t *cond, constpthread_condattr_t *attr);                    //動態初始化

pthread_cond_destroy(pthread_cond_t *cond);                  //刪除

條件變量属性

pthread_condattr_init()               //初始化

pthread_condattr_destroy()            //刪除

等待信號廣播

pthread_cond_wait()                        //等待 (等待信號)

pthread_cond_signal()                     //信號 (發出信號)

pthread_cond_broadcast()               //廣播

 

函數或參數的前綴綜合

pthread_                                     //線程

pthread_attr_                            //線程屬性

pthread_barrier_                      //屏障

pthread_mutex_                       //互斥

pthread_mutexattr_                //互斥屬性

pthread_cond_                         //條件變量

pthread_condattr_                   //條件變量屬性

pthread_key_                            //線程存儲


查看评论

Linux视频教程

本课程为linux全套系列课程之一--Linux基础入门教程,Linux常用命令和基本用法,课程由浅入深,跟我一起踏上Linux之旅!!!!
  • 2015年05月25日 13:40

coursera机器学习 week1&week2&week3 总结

最近两个礼拜看了下2017年7月26日开课的coursera的机器学习课程,学到了第三周,打算大致总结一下前三周的课程,基本不会列公式,白话记叙,个人总结和心得而已。引言部分先介绍机器学习的定义,旧的...
  • dinkwad
  • dinkwad
  • 2017-08-10 14:52:37
  • 233

命令式至函數式隨記(三)

English 函數式的思考中心就是分解問題,舉例來說,計算list長度命令式如下: def length(list):     c = 0     for i in list:      ...
  • caterpillar_here
  • caterpillar_here
  • 2012-10-19 07:34:34
  • 2353

AfxEndThread导致内存泄露

[cpp] view plain copy UINT WorkingProc(LPVOID pParam)   {       CString strFolderPath = _T("....
  • qq_23992597
  • qq_23992597
  • 2016-07-05 14:14:59
  • 1186

Windows程序设计_Chap01_起步_学习笔记

Windows程序设计_Chap01_起步_学习笔记 ――By: Neicole(2013.05.21)   01. 开篇       今天是2013.05.20,开始学习《windows程...
  • neicole
  • neicole
  • 2013-05-21 23:26:40
  • 6613

Numerical 数值计算

  • 2010年02月04日 09:34
  • 101KB
  • 下载

Elegant Scipy - the Art of Scientific Python

  • 2017年11月15日 10:48
  • 17.51MB
  • 下载

python基础学习笔记<函数式编程与模块>

来自:http://www.liaoxuefeng.com/ 高阶函数 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码: >>> ab...
  • new_abc
  • new_abc
  • 2015-08-06 10:15:29
  • 1206

linux c函數手冊

  • 2007年09月19日 23:17
  • 253KB
  • 下载

c# 線程控制,能定時關掉一個線程

  • 2008年11月14日 15:50
  • 36KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 1072
    积分: 334
    排名: 23万+