`
lobin
  • 浏览: 379110 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于order的问题

 
阅读更多

关于order的问题

 

这里的“order”指的是“顺序”。时序是我们经常遇到的,当然这里并不单单指时间顺序上的时序”,也包括某种先后,因果等空间上的顺序。

 

为什么要在这里讨论这个问题?

 

想想我们在查找定位多线程系统问题的时候的各种无所适从和头疼脑大!

 

而且这也是一个普遍性的问题,其实很多地方都反映了这个order”的问题。即便是在现实生活中,也到处存在着我们说的这个问题。

 

想想两台机器两个程序之间的通信,客户端向服务器发送一条信息,如打个招呼,向服务器发送字符串"hello", 服务器为什么就能收到"hello", 怎么就不是"holle","holel",或者其他的什么?

 

 

还有假设客户端向服务器发送一个请求R:ABC, 在发送服务器的时候将请求消息R分成3段分3次发送,依次发送A, B, C,服务器在接受的时候怎么保证接收到完整的消息R:ABC, 顺序和发送的时候一致?

 

在一个多线程系统中,各个线程按照既定的自己的程式独立运行,看着毫无章法,杂乱无章的执行,其实也是按照一定的“顺序“在执行,它们接受系统线程的调度,也会有各种同步机制,锁,是的整个系统,各个线程按照既定的顺序去执行。

 

我们经常说的线程安全问题,其实也是因为相关线程没有按照我们既定期望的顺序去执行所导致的结果不正确。这个也可以用我们上面提到的通信来解释,这里涉及到线程间的通信问题。

 

在一个消息系统中,我们很多时候也需要保证这个时序,假设两个消息a,b,先发送消息a,然后发送消息b,在接收的时候,也需要保证先接收到消息a,然后接收到消息b。这里是因为在发送的时候a比b先发送,所以接收的时候也需要b比b先接收。

这里举个例子,

 

那消息系统怎么保证消息a比消息b先接收到?

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics