码迷,mamicode.com
首页 > 编程语言 > 详细

Linux下多线程1——线程相关函数

时间:2015-08-13 17:15:07      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

多线程一些基本函数与标识符

(1)pthread_t  : unsigned long int 是一个线程标识符

(2)pthread_create 创建线程的函数

      int pthread_create(pthread_t *_thread, //第一个参数指向线程标识符的指针

                                 __const pthread_attr_t *__attr  //第二个参数是线程属性

                                 void *(*__start_routine) (void *)//线程运行函数的起始地址

                                 void *__arg  //线程函数的参数

                               )

一般将第二个和第四个参数设置为NULL

若线程创建成功则返回0,否则返回其他值,常见的EAGAIN系统限制创建线程  EINVAL第二个参数非法

新创建的线程运行线程函数,而之前的线程继续下一行代码的运行。

(3)pthread_join 函数 等待一个线程结束

extern int pthread_join __P ((pthread_t __th, void **__thread_return));
第一个参数:被等待的线程标识符,线程ID

第二个参数:可以用来存储被等待的线程的返回值。

这个函数是一个线程阻塞函数,调用它的函数将一直等待被等待的线程结束。

(4)pthread_exit 

extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));

一个线程的结束有两种途径,一种是象我们上面的例子一样,函数结束了,调用它的 线程也就结束了

另一种方式是通过函数 pthread_exit 来实现

 

互斥锁用来保证一段时间内只有一个线程在执行一段代码。
一 pthread_mutex_init
函 数 pthread_mutex_init 用来生成一个互斥锁。 NULL 参数表明使用默认属性。如果需要
声明特定属性的互斥锁,须调用函数 pthread_mutexattr_init。函数
pthread_mutexattr_setpshared 和函数 pthread_mutexattr_settype 用来设置互斥锁属
性。前一个函数设置属性 pshared,它有两个取值, PTHREAD_PROCESS_PRIVATE 和
PTHREAD_PROCESS_SHARED。前者用来不同进程中的线程同步,后者用于同步本进程的 不同
线程。在上面的例子中,我们使用的是默认属性 PTHREAD_PROCESS_ PRIVATE。后者用来设
置互斥锁类型,可选的类型有 PTHREAD_MUTEX_NORMAL、 PTHREAD_MUTEX_ERRORCHECK、
PTHREAD_MUTEX_RECURSIVE 和 PTHREAD _MUTEX_DEFAULT。它们分别定义了不同的上所、解锁
机制,一般情况下,选用最后一个默认属性。

二 pthread_mutex_lock pthread_mutex_unlock pthread_delay_np

pthread_mutex_lock 声明开始用互斥锁上锁,此后的代码直至调用pthread_mutex_unlock 为止,

均被上锁,即同一时间只 能被一个线程调用执行。当一个线程执行到 pthread_mutex_lock 处时,

如果该锁此时被另一个线程使用,那此线程被阻塞,即程序将等待到另一 个线程释放此互斥锁。

Linux下多线程1——线程相关函数

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4727534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!