标签:
多线程一些基本函数与标识符
(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 处时,
如果该锁此时被另一个线程使用,那此线程被阻塞,即程序将等待到另一 个线程释放此互斥锁。
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4727534.html