多线程安全
介绍多线程安全的竞态、死锁、虚假唤醒等。
youngzhiyong
这个作者很懒,什么都没留下…
展开
-
C++线程异常检测工具(Valrind之helgrind和DRD)
从日志中,也可以找到相应的锁的签名,看到其对应的关系和顺序。在平常工作生活中,可以借助检测结果,可以快速的发现,可能存在死锁风险问题。因此,通过查看每个锁占用的时间,根据自己的业务逻辑需要进行判定是否可以减小锁的范围,减小独占时间,提高并发性。只能检测某一个锁占用的时间,不能统计多处、多个锁的占用时间。一般程序退出时,都会解锁,但是在程序退出时,仍然持有锁,说明此处发生死锁了。此工具可支持检测:多线程接口使用问题、竞态问题、锁范围问题。首先将应用程序,编译多线程场景下的可执行程序,需要链接。原创 2024-09-18 00:37:56 · 125 阅读 · 0 评论 -
多线程虚假唤醒
可能很多人都有这个疑问,其实我们再深入分析就会发现,如果生产者线程半个小时才生产一个产品,那么消费者线程在这半个小时内也没闲着,一直在判定产品数量的个数是否大于0了。无效消费,产生的原因是,消费者只是判定了产品数量是否满足消费条件,但未继续等待,因此就浪费了一次消费机会。再次分析发现,一旦消费者发现产品数量为0,一直在等待生产者的生产,但是消费者占用了锁,生产者也获取不到锁,这就造成了一个。因此,条件变量可以让这个过程变得更加高效,生产者生产了产品,通知消费者,已经生产了产品了,消费者可以使用了。原创 2024-09-18 00:34:27 · 424 阅读 · 0 评论 -
多线程死锁
在多线程编程中,死锁是一个常见的问题,希望通过本节的学习,能帮助大家正确的判断死锁,避免死锁,从而编写出高效和稳定的程序。原创 2024-09-18 00:32:35 · 559 阅读 · 0 评论 -
多线程竞态
多线程竞态,是指的多个线程同时访问/修改共享资源时,出现不可预知的结果。原创 2024-09-18 00:22:43 · 672 阅读 · 0 评论 -
多线程简介&应用
我们来先看一下冯诺依曼计算机硬件结构:在早期的简单批处理操作系统中,存储设备I/O相对于处理器速度太慢,导致处理器经常空闲。CPU利用率2/170.117611.76%:提高存储器的I/O速度。如果把存储设备的速度再提高,就可以提高CPU的利用率了。确实,在计算机发展的历史中,也在不断地提高存储设备的I/O速率。将计算机的存储设备,分级提高速率,并努力的靠近CPU,如下图所示:但是,尽管这样,仍然无法使得我们的存储设备I/O与CPU的速度媲美。原创 2024-09-18 00:17:15 · 294 阅读 · 0 评论