摘要:
同步机制摘要Critical Section Critical section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是: 一个局部性对象,不是一个核心对象。 快速而有效率。 不能够同时有一个以上的 critical section 被等待。 无法侦测是否已被某个线程放弃 阅读全文
posted @ 2017-09-20 14:31
我是张洪铭我是熊博士
阅读(196)
评论(0)
推荐(0)
摘要:
同步机制的最简单类型是使用 interlocked 函数,对着标准的 32 位变量进行操作。这些函数并没有提供“等待”机能,它们只是保证对某个特定变量的存取操作是“一个一个接顺序来”。稍后我会把这些 interlocked 函数展示出来,因为唯有你自己亲身比较它们和其他同步机制的差异,才能够了解它们 阅读全文
posted @ 2017-09-20 14:23
我是张洪铭我是熊博士
阅读(287)
评论(0)
推荐(0)
摘要:
Win32 中最具弹性的同步机制就属 events 对象了。Event 对象是一种核心对象,它的唯一目的就是成为激发状态或未激发状态。这两种状态全由程序来控制,不会成为 Wait...() 函数的副作用。 Event 对象之所以有大用途,正是因为它们的状态完全在你掌控之下。Mutexes 和 sem 阅读全文
posted @ 2017-09-20 14:18
我是张洪铭我是熊博士
阅读(314)
评论(0)
推荐(0)
摘要:
许多文件中都会提到 semaphores(信号量),因为在电脑科学中它是最具历史的同步机制。它可以让你陷入理论的泥淖之中,教授们则喜欢问你一些有关于信号量的疑难杂 症。你可能不容易找到一些关于 semaphores 的有用例子,但是我告诉你,它是解决各种 producer/consumer 问题的关 阅读全文
posted @ 2017-09-20 12:00
我是张洪铭我是熊博士
阅读(451)
评论(0)
推荐(0)
摘要:
Win32 的 Mutex 用途和 critical section 非常类似,但是它牺牲速度以增加弹性。或许你已经猜到了,mutex 是 MUTual EXclusion 的缩写。一个时间内只能够有一个线程拥有 mutex,就好像同一时间内只能够有一个线程进入同一个 critical sectio 阅读全文
posted @ 2017-09-20 11:33
我是张洪铭我是熊博士
阅读(282)
评论(0)
推荐(0)
摘要:
哲学家进餐问题是这样子的:好几位哲学家围绕着餐桌坐,每一位哲学家要么思考,要么等待,要么就吃饭。为了吃饭,哲学家必须拿起两支筷子(分放于左右两端)。不幸的是,筷子的数量和哲学家相等,所以每支筷子必须由两位哲学家共享。图4-1 显现出这种状态。? FAQ 16:我如何避免死锁? 哲学家都是有点倔强的人 阅读全文
posted @ 2017-09-20 10:24
我是张洪铭我是熊博士
阅读(471)
评论(0)
推荐(0)
摘要:
Jeffrey Richter 在他所主持的 Win32 Q&A 专栏(Microsoft Systems Journal,1996/07)中曾经提到过,Windows NT 和 Windows 95 在管理 dangling critical sections 时有极大的不同。在 Windows 阅读全文
posted @ 2017-09-20 10:18
我是张洪铭我是熊博士
阅读(267)
评论(0)
推荐(0)
摘要:
本章讨论 Win32 同步机制,并特别把重点放在多任务环境的效率上。撰写多线程程序的一个最具挑战性的问题就是:如何让一个线程和另一个线程合作。除非你让它们同心协力,否则必然会出现如第2章所说的“raceconditions”(竞争条件)和“data corruption”(数据被破坏)的情况。 在典 阅读全文
posted @ 2017-09-20 09:59
我是张洪铭我是熊博士
阅读(243)
评论(0)
推荐(0)
浙公网安备 33010602011771号