根据IBM.com 上的一篇文章,"竞争条件是两个或多个线程或进程正在读取或写入一些共享数据的情况,最终结果取决于线程的调度时间.竞争条件可以导致无法预测的结果和微妙的程序错误." .虽然这篇文章涉及Java,但我一般都被教导了相同的定义.
据我所知,从RAM读取的简单操作包括设置特定输入行(地址,读取等)的状态和读取输出行的状态.这是一个显然不能由两个设备同时执行并且必须被序列化的操作.
现在让我们假设我们遇到一些线程访问内存中的对象的情况.从理论上讲,这种访问应该被序列化以防止竞争条件.但是,例如读者/编写者算法假设任意数量的读者可以同时使用共享内存.
所以,问题是:在使用多线程时(例如在WinAPI中)是否必须实现读取的独占锁?如果没有,为什么?这个控件在哪里实现 - 操作系统,硬件?
最好的问候,库巴