![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux多线程编程
文章平均质量分 72
晨少爱学习
不定时分享个人所学,以及自学过程中的总结笔记,欢迎志同道合的朋友们一起讨论学习(csdbili)
展开
-
【Linux多线程编程-自学记录】10.条件变量
1、使用pthread_cond_wait等待条件变为真。传递给pthread_cond_wait的互斥量对条件进行保护,调用者把锁住的互斥量传递给函数。2、这个函数将线程放到等待条件的线程列表上,然后对互斥量进行解锁,这是个原子操作。3、这个函数与pthread_cond_wait类似,只是多一个timeout,如果到了指定的时间条件还不满足,那么就返回。方法2:让系统查询条件,使用系统条件变量 pthread_cond_t cond。需要一种机制,当互斥量被锁柱后,发现当前线程还是无法完成自己的操作。原创 2023-05-02 16:58:38 · 669 阅读 · 0 评论 -
【Linux多线程编程-自学记录】09.Linux多线程之读写锁
/尝试加读模式锁,失败则不阻塞。如果此时有线程以写模式对其进行加锁,则会阻塞,而且后来的读模式加锁也会阻塞,防止写锁请求失败。5.读加锁模式下,若线程希望写加锁,则会阻塞,直到所有线程释放锁为止。4.写加锁时,线程独占读写锁,其他线程的读写锁请求都会阻塞。3.读加锁时,其他线程都可以占用读模式的读写锁。2.读写锁有三种状态,读加锁、写加锁、不加锁。6.读写锁非常适合经常需要读动作的程序。原创 2023-05-01 19:28:05 · 1196 阅读 · 0 评论 -
【Linux多线程编程-自学记录】08.Linux多线程互斥量
4.当互斥量解锁以后,所有因为这个互斥量阻塞的线程都将变为就绪态,第一个获得cpu的线程会获得互斥量,变为运行态,5.互斥量用 pthread_mutex_t 类型的数据表示,在使用之前需要对互斥量初始化。1、如果是动态分配的互斥量,可以调用 pthread_mutex_init() 函数初始化。第一个参数是要初始化的互斥量,第二个参数是互斥量的属性﹐默认为NULL。2.互斥量本质就是锁,访问共享资源前对互斥量加锁,访问完成后解锁。3.当互斥量加锁以后,其他所有需要访问该互斥量的线程都将阻塞。原创 2023-05-01 19:23:47 · 1224 阅读 · 0 评论 -
【Linux多线程编程-自学记录】07.线程清除
线程可以安排它退出时的清理操作,这与进程的可以用atexit函数安排进程退出时需要调用的函数类似。线程可以建立多个清理处理程序,处理程序记录在栈中,所以这些处理程序执行的顺序与他们注册的顺序相反。pthread_cleanup_pop ( int excute) //清除处理程序。当执行以下操作时调用清理函数,清理函数的参数由args传入。3、用非零参数调用pthread_cleanup_pop。) , void *args) //注册处理程序。这样的函数称为 “线程清理处理程序”。原创 2023-05-01 19:16:50 · 835 阅读 · 0 评论 -
【Linux多线程编程-自学记录】06.向线程发送信号-sigaction
一般情况下,被阻塞的信号将不能中断此线程的执行,除非此信号的产生是因为程序运行出错,如SIGSEGC;how = SIG_BLOCK: 向当前的信号掩码中添加set,其中set表示要阻塞的信号组。SIG_UNBLOCK: 向当前的信号掩码中删除set,其中set表示要取消阻塞的信号组。SIG_SETMASK: 将当前的信号掩码替换为set,其中set表示新的信号掩码。**PS:**在多线程中,新线程的当前信号掩码会继承创造它的线程的信号掩码。// 删除信号集中的一个信号。// 增加一个信号到信号集。原创 2023-05-01 19:10:54 · 947 阅读 · 0 评论 -
【Linux多线程编程-自学记录】05.取消线程
分别表示收到信号后继续运行至下一个取消点再退出和立即执行取消动作〈退出〉﹔ oldtype如果不为NULL则存入运来的取消动作类型值。PTHREAD_CANCEL_DEFFERED和PTHREAD_CANCEL_ASYNCHRONOUS,线程在很多时候会查看自己是否有取消请求如果有就主动退出,这些查看是否有取消的地方称为取消点。是线程对取消信号的响应方式,立即取消或者延时取消。就是线程对取消信号的处理方式,忽略或者响应。取消一个线程,它通常需要被取消线程的配合。取消tid指定的线程,成功返回0。原创 2023-05-01 19:02:16 · 1138 阅读 · 0 评论 -
【Linux多线程编程-自学记录】04.线程链接-pthread_join
1.调用该函数的线程会一直阻塞,直到指定pid为thread的线程调用pthread_exit、return或者被取消。2.pthread_join会使指定的线程处于分离状态,分离状态的线程不能被join。如果指定线程被取消,retval被置为PTHREAD_CANCELED。线程链接 pthread_join。thread:链接线程的pid。如果调用成功,函数返回0。retval:返回码。原创 2023-05-01 11:11:29 · 676 阅读 · 0 评论 -
【Linux多线程编程-自学记录】03.主线程与子线程生命周期
3.main线程调用pthread_exit函数,子线程依然可以运行。2.如果main线程调用了 return 0;4.main线程接受参数的方式是通过argc,argv。1.运行代码时 ./a.out 也会被当作是一个参数。5.任意线程调用exit函数都会导致整个进程退出。原创 2023-05-01 11:08:52 · 226 阅读 · 0 评论 -
【Linux多线程编程-自学记录】02.创建线程
新线程的id,如果成功则新线程的id回填充到tidp指向的内存。: 线程属性(调度策略,继承性,分离性…: 回调函数(新线程要执行的函数): 成功返回0,失败则返回错误码。编译时需要连接库pthread。原创 2023-05-01 11:06:04 · 987 阅读 · 0 评论 -
【Linux多线程编程-自学记录】01.线程ID与进程ID
【代码】【Linux多线程编程-自学记录】线程ID与进程ID。原创 2023-05-01 11:00:47 · 150 阅读 · 0 评论