1.线程及通信

1、线程

创建线程

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
参数:- thread存储线程ID
          - attr线程属性,NULL默认属性8M的栈空间
          - start_routine线程的执行体函数
          - arg用于向start_routine传递的参数
返回:成功 return 0;

结束一个进程

void pthread_exit(void *retval);

等待一个进程结束

int pthread_join(pthread_t thread, void **retval);

2、互斥量

初始化互斥量

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

上锁

int pthread_mutex_lock(pthread_mutex_t *mutex);

解锁

int pthread_mutex_unlock(pthread_mutex_t *mutex);

销毁互斥量

int pthread_mutex_destroy(pthread_mutex_t *mutex);

3、条件量

初始化条件量

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

产生一个条件量,并发送

int pthread_cond_signal(pthread_cond_t *cond);

等待一个条件量的产生,如果条件量已经发送过,wait将处于死等状态

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

销毁条件量

int pthread_cond_destroy(pthread_cond_t *cond);

4、信号量

初始化信号量

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

P操作:消耗一个信号量,为0时阻塞

int sem_wait(sem_t *sem);

V操作:产生一个信号量

int sem_post(sem_t *sem);

销毁信号量

int sem_destroy(sem_t *sem);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,650评论 0 23
  • 引用自多线程编程指南应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有...
    Mitchell阅读 6,112评论 1 7
  • Android跨进程通信IPC整体内容如下 1、Android跨进程通信IPC之1——Linux基础2、Andro...
    隔壁老李头阅读 13,169评论 8 13
  • 线程 在linux内核那一部分我们知道,线程其实就是一种特殊的进程,只是他们共享进程的文件和内存等资源,无论如何对...
    大雄good阅读 3,887评论 0 2
  • 狗啃泥与秘密基地 小火箭人球球今年已经5岁了,他和他的小伙伴们一样,都拥有着尖尖的脑袋、圆圆的屁股,球球的眉...
    明王九印阅读 2,435评论 0 4

友情链接更多精彩内容