小威
...

  1.fetch (获取)

  2.对于多线程的程序的访问冲突问题,,引入互斥锁来解决

  3.初始化和销毁

    函数原型 :#include <pthread.h>

    int pthread_mutex_destroy(pthread_mutex_t *mutex);

    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t * restrict attr);

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

   加锁和解锁

    函数原型 : #include <pthread.h>

        int pthread_mutex_lock(pthread_mutex_t *mutex);  

        int pthread_mutex_trylock(pthread_mutex_t *mutex);

         int pthread_mutex_unlock(pthread_mutex_t *mutex);

    返回值 :成功返回0 ,失败返回错误号

    应尽量使用pthread_mutex_trylock调用代替pthread_mutex_lock调用,以免死锁

  4. condition variable 条件变量

    初始化与销毁 

      函数原型 : #include <pthread.h>

          int pthread_cond_destroy(pthread_cond_t *cond);

          int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t * restrict attr);

          pthread_cond_t cond = PTHREAD_COND_INITIALIZER

    返回值 : 成功返回0 , 失败返回 错误号

      函数原型 : #include <pthread.h>

          int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);

          int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_cond_t *restrict mutex);

          int pthread_cond_broadcast(pthread_cond_t *cond);

          int pthread_cond_signal(pthread_cond_t *cond);

      返回值 : 成功返回0, 失败返回错误号

      一个线程调用pthread_cond_wait调用的三步

            释放mutex

            阻塞等待

            当被唤醒时, 重新获得Mutex并返回

  5.semaphore(旗语, 信号量)

      表示可用资源的数量

    函数原型 ; #include <semaphore.h>

      int sem_init(sem_t *sem, int pshared, unsigned int value);

      int sem_wait(sem_t *sem);      减1

      int sem_trywait(sem_t *sem);

      int sem_post(sem_t *sem);      加1

      int sem_destroy(sem_t *sem);

          pshared = 0 : 表示 : 信号量用于同一进程的线程间同步

      

posted on 2013-09-16 18:35  小威_  阅读(131)  评论(0编辑  收藏  举报