问题解决方法及同步和一致性

在阅读APUE(第三版)的12.9线性和fork时,读的云里雾里,怎么都读不懂,本打算像以前一样,读不懂就算了,过。可以这次实在憋得慌,于是问了自己如下这个问题

即使读不懂,那么在这种情况下,能不能尽量理解一些呢?

记得以前看过学习知识要问自己三个W,What, Why, How。好吧,就问问自己这一节讲的是什么。

这一节讲的是什么呢?主题是什么?

再次浏览,提炼出了如下主题

线程在使用Fork后,会导致子进程与进程中互斥量,读写锁和条件变量不一致的问题。(注意,在提炼主题过程中,往往会遇到某些关键词不懂,这没关系,这一步最重要的是找出主题句)

之后,仔细阅读主题句,找出那些你不理解的词,往往是一些关键词导致对整节内容的不明白。下一步就很明确了,理解关键词的意思。这里对我来说是关键词是一致

说到一致,又想起来一起类似的与之相关的词,同步异步原子性数据一致性事务处理等等,我发现,自己不仅仅是对一致这个概念不清楚,而且对其它相关概念也一直是模棱两可,而正是这种模棱两可是自己学习新知识的障碍,是需要自己重点花力气解决的东西。

那么,什么是一致呢?

说到一致,往往说的是保持某某一致,如保持数据一致,并且基本有这样一个背景——多个操作同时修改一个数据。举个例子,多个线程同时修改一个变量,可能最后变量的值并非正确的。这时可以说变量没有保持一致性。

一致这个词的英文是cohere,有如下两个解释

  1. hold firmly together;form a whole
  2. (of an argument or theory) be logically consistent.

我觉得大致可理解为保持一个事物的整体性。在计算机中,当多个线程同时更改一个变量时,因为修改是分步的,所以如果不采取相关措施,就可以破坏变量的整体性。导致不一致的问题。

那么,12.9线程和fork中谈及的锁一致又具体指什么呢?

应该指的是锁的获取与释放的整体性,对锁来说,获取与释放必须是成对的操作,可以说这种成对的操作具有某种整体性,如果获取了但不释放,那么就破坏了这种整体性,锁的状态包括加锁解锁,如果整体性被破坏,就可以说锁的状态不一致

还有另一个经常提到的概念同步同步一致有什么区别?

可以这样看待,一致指的是被操作对象的属性,而同步指的是,为了保证被操作对象的一致性操作者所应该具有的属性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引用自多线程编程指南应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有...
    Mitchell阅读 6,067评论 1 7
  • 一、多线程 说明下线程的状态 java中的线程一共有 5 种状态。 NEW:这种情况指的是,通过 New 关键字创...
    Java旅行者阅读 10,176评论 0 44
  • 一 在无数的机缘巧合之下, 我竟成为了字幕组的一员。 真的还是蛮激动的, 从一开始的短剧翻译等等的测试, 到真正成...
    Downey_95阅读 2,187评论 0 1
  • 有个MM很抑闷,说男友是直男,老说她眼睛丑。我认真看了一下,虽然是26岁的女孩,眼部问题确实不乐观,有眼袋,还有...
    易运琼阅读 1,839评论 0 1
  • 我如果
    24K帅阅读 1,807评论 0 0