当前位置: 首页 > news >正文

Linux C-线程相关函数1

1、线程 thread

1.1 线程的创建 pthread_create

函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

重要参数

        1、start_routine 子线程运行的函数名

        2、arg 传递参数的指针

返回值

        成功:0

        失败:其他

1.2 线程的回收

1.2.1 pthread_join

函数原型:int pthread_join(pthread_t thread, void **retval);

函数描述:阻塞式等待指定线程的结束

重要参数

返回值

        成功:0

        失败:其他

1.2.2 pthread_detach

函数原型:int pthread_detach(pthread_t thread);

函数描述:非阻塞式,当指定线程结束时,系统自动回收线程资源

重要参数

返回值

        成功:0

        失败:其他

1.3 线程的退出 pthread_exit

函数原型:void pthread_exit(void *retval);

重要参数

        1、retval 与pthread_join配合使用,用于接收退出状态的返回值

返回值

        无

1.4 获取当前线程号 pthread_self

函数原型:pthread_t pthread_self(void);

重要参数

返回值

2、互斥锁 mutex

1.1 互斥锁初始化 pthread_mutex_init

函数原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);

重要参数

        1、mutex: pthread_mutex_t mutex

返回值

        成功:0

        失败:其他

1.2 上锁 

1.2.1 pthread_mutex_lock

函数原型:int pthread_mutex_lock(pthread_mutex_t *mutex);

函数描述:阻塞式

重要参数

返回值

        成功:0

        失败:其他

1.2.2 phtread_mutex_trylock

函数原型:int pthread_mutex_trylock(pthread_mutex_t *mutex);

函数描述:非阻塞式

重要参数

返回值

        成功:0(获取到锁)

        失败:其他

1.3 解锁 pthread_mutex_unlock

函数原型:int pthread_mutex_unlock(pthread_mutex_t *mutex);

重要参数

返回值

        成功:0

        失败:其他

1.4 销毁互斥锁 pthread_mutex_destroy

函数原型:int pthread_mutex_destroy(pthread_mutex_t *mutex);

重要参数

返回值

        成功:0

        失败:其他

3、信号量 semaphore

3.1 创建信号量 sem_create

函数原型:int sem_init(sem_t *sem, int pshared, unsigned int value);

重要参数

        1、pshare: 0-线程间  1-进程间

        2、value:信号量的值

返回值

        成功:0

        失败:-1

3.2 通知post

函数原型:int sem_post(sem_t *sem);

重要参数

返回值

        成功:0

        失败:-1

3.3 等待通知wait

函数原型:int sem_wait(sem_t *sem);

重要参数:阻塞式

返回值

        成功:0

        失败:-1

3.4 销毁信号量

函数原型:int sem_destroy(sem_t *sem);

重要参数

返回值

        成功:0

        失败:-1

疑问及待验证的问题:

1、线程的创建和使用

1.1、Linux c有类似java一样的线程池吗

1.2、pthread_exit的retval如何使用,目前还不太明白。

2、互斥锁

2.1、mutex锁静态构建的方法

3、信号量

3.1、一个线程post,多个线程wait

3.2、多个线程post,一个线程wait

3.3、多个线程post,多个线程wait

3.4、如何获取信号量的值,sem_t的value,以及最大值是多少


http://www.mrgr.cn/news/53282.html

相关文章:

  • 抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果
  • c语言必备知识-->文件操作(内存与磁盘交互)
  • llama gguf大模型文件合并
  • Navigation2 算法流程
  • C++标准模板库--vector
  • PyTorch 介绍
  • oracle10g运维:使用pl/sql连接window2003的oracle10g敲黑马程序员的select语句练习。
  • Spring Security 如何进行权限验证
  • tomcat catalina log 出现乱码(SpringMvc)
  • 机器视觉基础系列四—简单了解背景建模算法
  • OPPO通讯录备份5个实用技巧
  • 第21~22周Java主流框架入门-Spring 3.SpringJDBC事务管理
  • 跟我学C++中级篇——优化的整体分析
  • 基于vue框架的的大学校园社团管理系统q00q2(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 外包干了2个月,技术明显退步
  • JavaScript 第20章:Web Workers
  • 携手共赢:CMO与CFO如何打造企业增长的黄金搭档
  • rk3588s , rk806 , io电压的配置, 电源域的理解, rk808 , rk3399
  • 记忆柱群的兴奋时间
  • 提升SQL技能,掌握数据分析