相关帖子http://www.csdn.net/expert/topic/1061/1061819.xml?temp=.7534296
首先感谢oldworm介绍我看《Windows核心编程》,可是关于线程中还是有几个问题搞不太清楚。所以提出来,看看各位大哥大姐有何高参。
1,在线程中的同步是一个什么样的概念,它的作用是什么?什么情况下需要同步,什么情况下不需要?
2,多个线程同时访问共享资源,其结果是无法预料的,所以有很多办法可以防止多个线程同时对共享数据进行操作。这和同步是一个概念吗?如果不是,有何联系,区别呢?总之,我会继续看《Windows核心编程》,也希望大家能指点一二。
首先感谢oldworm介绍我看《Windows核心编程》,可是关于线程中还是有几个问题搞不太清楚。所以提出来,看看各位大哥大姐有何高参。
1,在线程中的同步是一个什么样的概念,它的作用是什么?什么情况下需要同步,什么情况下不需要?
2,多个线程同时访问共享资源,其结果是无法预料的,所以有很多办法可以防止多个线程同时对共享数据进行操作。这和同步是一个概念吗?如果不是,有何联系,区别呢?总之,我会继续看《Windows核心编程》,也希望大家能指点一二。
解决方案 »
- 这个头文件comdef.h的作用是什么?
- how are you 转换为 you are how
- 如何在vc++多文档程序视图区中添加标注并打印
- 关于CPropertySheet动态显示的问题,大小调节问题!
- delphi和vc安装在一个系统上的问题
- 高手们:CFtpConnection中PutFile()函数中怎么知道传输进度???
- 程序员不能重现的bug,你们怎么解决?
- 用vc做的动态链接库在pb中调用时出问题
- 再请教一个二维数组作参数的菜问题
- 一个BYTE变量a,用itoa转换为16进制字符串,该如何???参数怎么写??
- 驱动编程相关:怎么拦截win32k.sys导出的system service????(高分)
- 尝试做第一个钩子不成功,不知错在何处,请各位帮忙!万分感谢(附代码)
信号量是一种异步机制,就是pv操作了,当两个线程,a发生了,b才能运行就需要对b的开始调用p(wait)操作,而a的结尾调用v(single)操作,b运行到wait,如果a没结束,b就阻塞,a结束调用v操作,会唤醒阻塞的b线程。要想系统的了解,建议看一下操作系统,pv操作的参数就是临界区对象(CCriticalSection)、互斥量对象(CMutex)、信号量对象(CSemaphore)和事件对象(CEvent),
使用多线程可以带来一些非常有趣的问题。例如,如何防止两个线程在同一时间访问同一数据?例如,假设一个线程正在更新一个数据集,而同时另外一个线程正在读取数据集,结果如何?第二个线程将会读取到错误的数据,因为数据集中只有一部分元素被更新过。
保持在同一个进程内的线程工作协调一致称之为线程同步。Event对象实际上就是线程同步的一种形式。在本节中,你将会学到三种使你的多线程程序更安全的线程同步对象—critical section、互斥对象(mutex)、信号量(semaphore)。他说:保持在同一个进程内的线程工作协调一致称之为线程同步。而言下之意,如何防止两个线程在同一时间访问同一数据的问题属于同步问题。如果是这样我就搞清楚两都之间的联系了。当然,协调一致还涉及到其它问题,比如CPU分配不均。
不知道我这样理解对了吗?