百科问答小站 logo
百科问答小站 font logo



可不可以近似认为,同步就是单线程,异步就是多线程? 第1页

  

user avatar   xing-jiankuan 网友的相关建议: 
      

所谓“同步”是指你要做一件事,等着他完成后,然后再做下一件事。实现的方法既可以是同线程调用一个函数(函数执行完了才能向下走)。

也可以是启动一个线程,但要等待线程执行完,比如用Future.wait。wait/notify,Thread.join,waitgroup等。

所谓“异步”是指你要发起一件事,但不太关心他做没做完,继续自己的。使用额外的线程发起是最常见的做法。

但也可以先把任务创建出来,并不执行。当前的执行继续往下走。那个被创建出来的任务等到合适的时机被同一个线程运行。如js里的await就是这样工作的。

现实中常见的思路是,尽量异步,尽可能塞更多更多工作给CPU。到逻辑上不得不需要一个事情必须做完时,再去等待。




  

相关话题

  在linux下,假如一个线程由于持有暂时无法lock的mutex而休眠,这个线程何时会被重新调度? 
  汇编下call和ret指令是否有内存屏障的作用? 
  多个 CPU 操作多线程对主内存中某一共享变量同时进行写入操作可以做到吗? 
  Golang、Kotlin、C#、JS、Python等都有协程,市面上的协程有什么本质上的区别? 
  多核CPU中,利用多线程进行排序中出现了一些奇怪的现象,不知道其背后的原因是什么,希望有人能给予解答? 
  .Net core 自旋锁 vs Lock statement/Monitor 的开销在哪? 
  go mutex阻塞线程吗,如果不阻塞,为什么呢? 
  C# 如何在调用控件时做到 Thread-safe(线程安全)? 
  在同一个进程中,能否在一个线程用一个epoll大循环管理多个UdpServer+TcpServer? 
  如何在arduino中实现多线程? 

前一个讨论
说话直或者说话尖酸刻薄与耿直或者直率有什么区别或者关系吗?
下一个讨论
「老而不死是为贼」是一种怎样的思路?





© 2024-12-23 - tinynew.org. All Rights Reserved.
© 2024-12-23 - tinynew.org. 保留所有权利