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

          

  • 相关阅读:
    Mobile GMaps - Google Map移动版
    365Key今天不能用了,感觉不爽
    推荐:对个人免费的杀毒软件[avast!]
    向 Visual Studio 2005 Tools for Office 迁移时,将 VBA 代码转换为 Visual Basic .NET
    令人向往的3000年生活(转载)
    也说技术人员创业
    痛恨3721的朋友们,装个avast! Antivirus吧
    很Cool很全的Google Map的应用
    关于.net的企业应用开发
    天天网摘(20050704)
  • 原文地址:https://www.cnblogs.com/cxw825873709/p/3324790.html
Copyright © 2011-2022 走看看