Sey*_*our 6 .net c# multithreading delegates
在最近的"技术讨论"中,我被问到"你如何使用一个线程完成多线程?"在确认面试官不认为这是一个棘手的问题后,我不得不承认我不知道如何在单个线程上实现多线程,而且,我认为这个问题有点矛盾.面试官提供的答案"通过使用多播代表",让我想知道他是否真的不了解代表和潜在的线程.我很想知道这个问题是否有任何优点,更重要的是,如果相关的答案有任何意义.谢谢.
协程是为了模拟协作多线程(.NET 不支持,除非我们考虑async/await模式视为协程模式)。
异步编程模拟多线程(至少部分地...例如同时执行多个读/写)...两者都是隐藏“线程”部分的可能解决方案。
详细阐述异步编程...人们可以基于单线程 + 异步阐述构建一整个 Web 服务器,能够同时响应数百个请求。每次从磁盘读取数据都是异步完成的。对连接客户端的每个响应都将异步完成,依此类推。
根据我的理解,node.js 是一个完全基于异步编程(技术上称为非阻塞 I/O)的单线程 Web 服务器......请参见例如/sf/answers/1035815161/ /613130
在我所写的内容中,我将补充一些语言实现了所谓的绿色线程。绿色线程是不使用操作系统调度程序的协作线程。他们的代码是在单个线程中执行的(至少从他们的角度来看)。看来Go、haskell、老Ruby、各种版本的Smalltalk都使用/使用过绿色线程)。