zoukankan      html  css  js  c++  java
  • 第42天-进程 _2(2013.09.16)

      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 : 表示 : 信号量用于同一进程的线程间同步

          

  • 相关阅读:
    asp image
    Linux安装破解sublime text 2
    Ubuntu Java环境配置
    Ubuntu上完美视频播放软件XBMC
    制作Ubuntu Live启动盘
    STM32·flash烧写
    Ubuntu上用Windows那些软件
    Ubuntu屏幕亮度控制在acer4750g笔记本上失效的解决方法
    Ubuntu的grub启动界面,默认高亮选项的修改方法
    Ubuntu解决无法删除msttcorefonts的问题
  • 原文地址:https://www.cnblogs.com/cxw825873709/p/3324790.html
Copyright © 2011-2022 走看看