<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Just_A_Coder_26的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Just_A_Coder_26</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Just_A_Coder_26]]></copyright><item><title><![CDATA[【Linux系统编程】多线程并发：POSIX 信号量（无名&有名)+信号量版生产者-消费者]]></title><link>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/170047664</link><guid>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/170047664</guid><author>Just_A_Coder_26</author><pubDate>Thu, 05 Nov 2026 22:58:26 +0800</pubDate><description><![CDATA[注意初始化信号量的参数：1）要想在进程间共享，无名信号量必须位于共享内存区域内。2）对于线程间共享的信号量，线程组退出了，无名信号量也就不复存在了。3）无名信号量初始化以后，就可以像操作有名信号量一样操作无名信号量了。4）value:信号量初始值value=1:二值信号量，类似互斥锁    value>1:计数信号量5）pshared: 用于声明信号量是在线程间共享还是在进程间共享。0 表示在线程间共享，非零值则表示信号量将在进程间共享。6）return: 成功返回0，失败返回-1。]]></description><category></category></item><item><title><![CDATA[【LINUX系统编程】多线程并发：条件变量cond和“生产者-消费者模型”]]></title><link>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169947622</link><guid>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169947622</guid><author>Just_A_Coder_26</author><pubDate>Tue, 03 Nov 2026 17:56:38 +0800</pubDate><description><![CDATA[互斥锁保护了数据的安全，而条件变量让线程学会了“优雅地休息”。从线程执行顺序可看出，等生产者把货放进去，按下门铃（调用通知函数），消费者听到铃声醒过来，再去拿货,很有序。仓库没货的时候，消费者不用再疯狂敲门了，直接在门口搬个小板凳睡大觉（阻塞等待），把 CPU 让给别人。可以加个is_over标志位，当生产者不再生产，需要通知消费者，避免永久阻塞，这点很重要。等生产者把货放进去，按下门铃（调用通知函数），消费者听到铃声醒过来，再去拿货。但是，在真实的开发场景中，互斥锁暴露出了一个致命的问题。]]></description><category></category></item><item><title><![CDATA[【Linux系统编程】多线程并发：读写锁（rwlock）]]></title><link>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169553781</link><guid>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169553781</guid><author>Just_A_Coder_26</author><pubDate>Fri, 30 Oct 2026 18:00:28 +0800</pubDate><description><![CDATA[当多线程访问同一个共享数据，会对数据进行读或写操作，当读进程很多的时候，一个一个用互斥锁未免开销太大，一般“读”这种不改变共享数据的操作之间，不互斥也不会有什么大偏差，而写操作这种会改变数据的操作，互斥是必须的。然而本人又踩了个坑，在我加上写优先属性再去初始化，却忘了删掉之前不带属性的最初版本的初始化，导致重复初始化，覆盖了前面写好的写优先属性，，，，，，4）int pthread_rwlock_unlock(pthread_rwlock_t *__rwlock)      解锁(读/写线程都可）]]></description><category></category></item><item><title><![CDATA[【Linux系统编程】多线程并发：互斥锁(mutex)初探与踩坑记录]]></title><link>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169356720</link><guid>https://blog.youkuaiyun.com/Just_A_Coder_26/article/details/169356720</guid><author>Just_A_Coder_26</author><pubDate>Wed, 28 Oct 2026 22:38:58 +0800</pubDate><description><![CDATA[在大二自学Linux系统编程的路上，前面我初步学习了解了Makefile，文件io，进程处理和进程通讯，今天推开了多线程并发的大门，以此稿作学习记录。在多线程环境下，多个线程同时操作同一个共享变量（比如全局变量）时，如果不加控制，就会出现数据混乱（竞态条件）。当多个线程都需要访问同一个变量，同一个临界资源的时候，互斥锁能保证线程互斥的进行，从而保证结果的一致性。互斥锁（Mutex）就像一个房间的门锁，保证了同一时刻只有一个线程能进入房间操作数据。初始化互斥锁 第二个参数是锁属性，NULL为默认。]]></description><category></category></item></channel></rss>