读书人

线程编程常见API简介(上)

发布时间: 2012-12-21 12:03:49 作者: rapoo

线程编程常见API简介(下)

?

一、概述

? ? ? 本节将继续说明有关线程编程常用 API 的使用方法,主要说一下与线程条件变量及线程信号通知的 API。通过这些 API 可以实现线程之间的同步及通信机制。

?

二、线程条件变量 API

?1)初始化/销毁线程条件变量:pthread_cond_init/pthread_cond_destroy;在 acl 库中相应的 API 为 acl_pthread_cond_init/acl_pthread_cond_destroy。

#include <stdio.h>#include <assert.h>#include <pthread.h>/* 快速初始化线程锁和线程条件变量 */static pthread_mutex_t __mutex = PTHREAD_MUTEX_INITIALIZER;static pthread_cond_t __cond = PTHREAD_COND_INITIALIZER;static void *thread_waiting(void* arg){(void) arg;printf("thread: %ld waiting ...\r\n", pthread_self());/* 阻塞在线程条件变量上, */assert(pthread_cond_wait(__cond, __mutex) == 0);/* 该线程被唤醒,同时拥有了线程锁 __mutex */printf("thread: %ld wakeup by other thread\r\n", pthread_self());return NULL;}int main(void){pthread_t tid;/* 创建阻塞在线程条件变量上的子线程 */assert(pthread_create(&tid, NULL, thread_waiting, NULL) == 0);sleep(10);  /* 主线程休息 10 秒 *//* 唤醒阻塞在线程条件变量上的子线程 */assert(pthread_cond_signal(__cond) == 0);/* 接管子线程的退出状态 */assert(pthread_join(&tid) == 0);return 0;}

? ? ? ?该例子非常简单,用户可以在自己的程序中灵活使用这些 API。

?

线程编程常见API简介(上)

线程编程常见API简介(中)

acl 库下载:https://sourceforge.net/projects/acl/

读书人网 >编程

热点推荐