都有什么类别的网站,中国开源网,wordpress 怎么打开,pc开奖网站开发一、C/C多线程操作说明C/C多线程基本操作如下#xff1a; 1. 线程的建立结束 2. 线程的互斥和同步 3. 使用信号量控制线程 4. 线程的基本属性配置 在C/C代码编写时#xff0c;使用多线程机制#xff0c;首先需要做的事情就是声明引用#xff0c;具体如下#xff1a;#inclu…一、C/C多线程操作说明C/C多线程基本操作如下 1. 线程的建立结束 2. 线程的互斥和同步 3. 使用信号量控制线程 4. 线程的基本属性配置 在C/C代码编写时使用多线程机制首先需要做的事情就是声明引用具体如下#include 二、线程基本操作方法基本线程操作1. pthread_create()创建线程开始运行相关线程函数运行结束则线程退出2. pthread_eixt()因为exit()是用来结束进程的所以则需要使用特定结束线程的函数3. pthread_join()挂起当前线程用于阻塞式地等待线程结束如果线程已结束则立即返回0成功4. pthread_cancel()发送终止信号给thread线程成功返回0但是成功并不意味着thread会终止5. pthread_testcancel()在不包含取消点但是又需要取消点的地方创建一个取消点以便在一个没有包含取消点的执行代码线程中响应取消请求.6. pthread_setcancelstate()设置本线程对cancle线程的反应7. pthread_setcanceltype()设置取消状态 继续运行至下一个取消点再退出或者是立即执行取消动作8. pthread_setcancel()设置取消状态三、线程互斥与同步机制 基本的互斥与同步的操作方法1. pthread_mutex_init()互斥锁的初始化2. pthread_mutex_lock()锁定互斥锁如果尝试锁定已经被上锁的互斥锁则阻塞至可用为止3. pthread_mutex_trylock()非阻塞的锁定互斥锁4. pthread_mutex_unlock()释放互斥锁5. pthread_mutex_destory()互斥锁销毁函数(更多免费 C/CLinuxNginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDK等等多个知识点干货学习资料加群 960994558)四、多线程实践1. 基本的线程及建立运行下面的代码是C/C开发的基本的线程的运行使用的就是最基本的pthread.h/* thread.c */
例程中循环3次建立3条线程并且使用pthread_join函数依次等待线程结束 线程中使用rand()获取随机值随机休眠5次随意会出现后执行的线程先执行完成 运行结果$ 可以看到线程1先于线程0执行但是pthread_join的调用时间顺序先等待线程0执行 由于线程1已经早结束所以线程0被pthread_join等到的时候线程1已结束就在等待到线程1时直接返回 2. 线程执行的互斥和同步pthread_mutex_lock下面我们在上面的程序中增加互斥锁/*thread_mutex.c*/
在上面的例程中直接添加同步锁pthread_mutex_t 在线程中加入程序在执行线程程序时调用pthread_mutex_lock上锁发现上锁时候后进入等待等待锁再次释放后重新上锁 所以线程程序加载到队列中等待等待成功上锁后继续执行程序代码 运行结果如下Create 以上可能存在有不足的地方欢迎指出讨论觉得不错的朋友希望能得到您的转发支持同时可以持续关注我。(更多免费 C/CLinuxNginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDK等等多个知识点干货学习资料加群 960994558)