乡 曙光 计算,改变您的现在 DAWNING 同步对象 在共享存储多处理器并行机上,线程通过全局变量通信, 对于全局变量的操作必须进行同步。 pthread提供两个线程同步原语:互斥和条件变量 2006年4月 共享存储编程 11/108
2006年4月 共享存储编程 11/108 同步对象 在共享存储多处理器并行机上,线程通过全局变量通信, 对于全局变量的操作必须进行同步。 pthread提供两个线程同步原语 : 互斥和条件变量
乡 曙光 计算,改变您的现在 DAWNING 互斥锁函数 函数 操作 Mutex_inito 初始化一个互斥锁 Mutext_lock( 阻塞式加锁操作 Mutex_trylocko 非阻塞式加锁操作 Mutex_unlock( 解锁 Mutex_destroyo 解除互斥状态 2006年4月 共享存储编程 12/108
2006年4月 共享存储编程 12/108 互斥锁函数 函数 操作 Mutex_init() 初始化一个互斥锁 Mutext_lock() 阻塞式加锁操作 Mutex_trylock() 非阻塞式加锁操作 Mutex_unlock() 解锁 Mutex_destroy() 解除互斥状态
乡 曙光 计算,改变您的现在 DAWNING 条件变量的函数 函数 操作 pthread_cond_init( 初始化条件变量 pthread_cond_waito 阻塞直至条件为真 thread_cond_ signal0强制条件为真,解除等待条件的线程的阻塞 pthread_cond_timedwait0阻塞直到指定条件为真或 timeout pthread_cond_ broadcast0解除所有等待条件的线程的阻塞 pthread_cond_destroy0销毁条件变量 2006年4月 共享存储编程 13/108
2006年4月 共享存储编程 13/108 条件变量的函数 函数 操作 pthread_cond_init() 初始化条件变量 pthread_cond_wait() 阻塞直至条件为真 pthread_cond_signal() 强制条件为真,解除等待条件的线程的阻塞 pthread_cond_timedwait()阻塞直到指定条件为真或timeout pthread_cond_broadcast()解除所有等待条件的线程的阻塞 pthread_cond _destroy() 销毁条件变量
乡 曙光 计算,改变您的现在 DAWNING Hello World (1) # include≤pt thread. h> include"stdio. h void *worker(; maino pthread_t thread pthreadcreate (&thread, NULL, worker, NULL; pthread _join(thread, NULL; void*worker 编译命令 gcc hello. c-Ipthread printf( Hello World! n"; 运行结果 Hello world! 2006年4月 共享存储编程 14/108
2006年4月 共享存储编程 14/108 Hello World(1) #include <pthread.h> #include "stdio.h" void *worker(); main() { pthread_t thread; pthread_create(&thread,NULL,worker,NULL); pthread_join(thread,NULL); } void *worker() { printf("Hello World!\n"); } 编译命令 gcc hello.c –lpthread 运行结果 Hello World!
乡 曙光 计算,改变您的现在 DAWNING pthread_t线程数据类型 pthread_create(&thread, NULL, worker, NULLE 函数 pthread_create0用于创建一新的线程,新线程一旦建立便进入运 行状态 参数: 线程指针或句柄 线程属性变量,属性参数:默认为NULL属性对象一旦建立可以用于 创建多个具有共同属性的线程线程创建后可删除属性对象 线程要执行的函数 传入该执行函数的一个参数,无则NUL可以是任意类型 线程的终止 线程函数正常终止返回 自调用 pthear_exit0函数; 线程被取消 线程接收到中止的信号 当主进程执行exit0后,进程及其全部线程全部终止 2006年4月 共享存储编程 15/108
2006年4月 共享存储编程 15/108 pthread_t 线程数据类型 pthread_create(&thread,NULL,worker,NULL); 函数pthread_create()用于创建一新的线程,新线程一旦建立便进入运 行状态 参数: 线程指针或句柄 线程属性变量,属性参数:默认为NULL. 属性对象一旦建立可以用于 创建多个具有共同属性的线程,线程创建后,可删除属性对象. 线程要执行的函数 传入该执行函数的一个参数,无则NULL.可以是任意类型 线程的终止 线程函数正常终止返回; 自调用pthear_exit()函数; 线程被取消; 线程接收到中止的信号; 当主进程执行exit()后,进程及其全部线程全部终止