第十章 条件变量
作者:Allen B. Downey
原文:Chapter 10 Condition variables
译者:飞龙
协议:CC BY-NC-SA 4.0
像上一章所展示的那样,许多简单的同步问题都可以用互斥体解决。这一章中我会介绍一个更大的挑战,著名的“生产者-消费者”问题,以及一个用于解决它的新工具,条件变量。
10.1 工作队列
在一些多线...
分类:
其他好文 时间:
2016-07-17 00:04:43
阅读次数:
228
Virut分析 0x00、综合描述 virut样本的执行过程大体可以分为六步:第一步,解密数据代码,并调用解密后的代码;第二步,通过互斥体判断系统环境,解密病毒代码并执行;第三步,创建内存映射文件,执行内存映射文件代码;第四步,遍历进程列表除前4个进程外其他进程全注入代码,挂钩七个函数;第五步,向注 ...
分类:
其他好文 时间:
2016-06-24 22:07:09
阅读次数:
266
out返回值,能创建互斥体,则返回true,不能创建互斥体Mutex,则说明已经存在运行的实例,返回false。 ...
分类:
其他好文 时间:
2016-06-14 06:18:19
阅读次数:
149
不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程)。 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具。 Mutex是互斥体,命名的互斥体可以跨进程使用,所以可以用以实现程序单一实例这个需求。相关的例子网上应该不少,不过 ...
分类:
其他好文 时间:
2016-06-06 13:48:08
阅读次数:
133
boost锁的概述:
boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁。
举个通俗的例子,如果共享资源是一个自动锁住的房间,互斥体是钥匙,进入房间必须取钥匙,离开房间应该还钥匙。这就对应着互斥体的lock(取钥匙)和unlock(还钥匙)。
动态分配内存存在类似的情况。如果忘记delete,会导致内存泄漏。它是如何解决的?在栈上分配对象...
分类:
其他好文 时间:
2016-05-19 15:13:46
阅读次数:
247
1、内核多线程相关内容1.1 头文件#include 1.2 定义/初始化变量struct mutex SPI_work; /*定义互斥体*/mutex_init(&SPI_work); /*初始化*/mutex_lock(&SPI_work); func();mutex_...
分类:
编程语言 时间:
2016-01-26 10:36:48
阅读次数:
218
一、WaitHandler的类层次 可以看到 WaitHandle是 事件(EventWaitHandle)、互斥体(Mutex)、信号量(Sempahore)的父类。 WaitHandle我们最经常使用的方法,并是使用它的静态方法WaitAll. 我们会发现在这个WaitHandle里面只有等待方...
分类:
编程语言 时间:
2015-12-14 14:14:28
阅读次数:
226
Mutex对象是一个同步基元,可以用来做线程间的同步。若多个线程需要共享一个资源,可以在这些线程中使用Mutex同步基元。当某一个线程占用Mutex对象时,其他也需要占用Mutex的线程将处于挂起状态。示例代码:using System;using System.Collections.Generi...
产生竞态的情况:(1)对称多处理器(SMP)的多个CPU(2)单CPU的进程与抢占它的进程(3)中断与进程之间解决竞态途径:互斥访问临界区:访问共享资源的代码区互斥途径:中断屏蔽、原子操作、自旋锁、信号量、互斥体中断屏蔽local_irq_disable() /*屏蔽中断*/ ...critical...
分类:
系统相关 时间:
2015-09-07 19:34:58
阅读次数:
334
不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程)。实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具。Mutex是互斥体,命名的互斥体可以跨进程使用,所以可以用以实现程序单一实例这个需求。相关的例子网上应该不少,不过很多...
分类:
其他好文 时间:
2015-09-07 18:02:17
阅读次数:
151