多线程编程API

阅读更多
编译模式:sco环境下,在cc编译器时需要使用libgthreads.so


1 创建线程:
  int pthread_create(pthread_t *__restrict __thread,
  __const pthread_attr_t *__restrict __attr,
                           void *(*__start_routine) (void *),
                           void *__restrict __arg) __THROW);
  参数1:__restrict __thread 创建成功的线程句柄
  参数2:__restrict __attr 为创建的线程提供的一些环境设置
  参数3:线程创建后执行的函数指针
  参数4:传递给线程函数的变量指针
 
  返回值为非零,执行失败
 
2 合并线程:pthread_join(pthread_t __th, void **__thread_return)
  参数1:__th 要销毁的线程句柄
  参数2:返回的线程执行值
  返回值为非零,执行失败
  说明:清理线程不一定要由创建该线程的线程来执行,任何线程都是平等的,任何线程都可以清理别的线程
 
3 对线程间共享资源的保护
  锁的创建方式:
  对于静态的共享资源,使用静态锁
    使用 :pthread_mutex_t mymutex=PTHREAD_MUTEX_INITIALIZER;
    创建一个静态锁。
               
    对于动态分配的资源,使用动态锁
     int pthread_mutex_init( pthread_mutex_t *mymutex, const pthread_mutexattr_t *attr)
     参数1:锁的句柄(由函数返回)
     参数2:动态分配资源的地址
    
  加锁函数:
  int pthread_mutex_lock(pthread_mutex_t *__mutex)
    int pthread_mutex_trylock(pthread_mutex_t *__mutex)
  解锁函数:
    int pthread_mutex_unlock(pthread_mutex_t *__mutex);

4 线程间信号的传递
  1 条件变量
    pthread_cond_t mycond;
    条件变量初始化:
    pthread_cond_init(pthread_cond_t *__restrict __cond,
                              __const pthread_condattr_t *__restrict
                              __cond_attr)
    参数1:条件变量指针
    参数2:锁变量指针
    释放条件变量:
    int pthread_cond_destroy (pthread_cond_t *__cond)
    参数1:条件变量指针
2  唤醒等待条件变量的线程(所有线程)
    int pthread_cond_broadcast (pthread_cond_t *__cond)
参数1:条件变量指针
3  唤醒第一个正在睡眠的线程
int pthread_cond_signal(pthread_cond_t *__cond)

4  休眠线程,等待唤醒
    int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex);
                 

你可能感兴趣的:(多线程,编程,thread)