Native vs. Protothreads,哪个更容易?

Posted

技术标签:

【中文标题】Native vs. Protothreads,哪个更容易?【英文标题】:Native vs. Protothreads, what is easier? 【发布时间】:2009-01-31 08:52:22 【问题描述】:

我刚刚偶然发现了 Protothreads。它们似乎优于本机线程,因为上下文切换是显式的。

我的问题是。让这种多线程编程又变得容易了?

(我想是的。但是我错过了什么吗?)

【问题讨论】:

“上下文切换是显式的”。因此,我们又回到了 Windows 3 和协作式多任务处理。我不会说没有抢占的多线程编程很“容易”——避免竞争和死锁更容易,但更难避免一项失控的任务导致系统无响应。 ...嵌入式程序员不太关心后者。他们习惯于必须做出实时保证,因此他们知道很多方法来避免缓慢的不可中断操作。如果相同的技术适用于您的应用,那么线程可能是不必要的开销。 谢谢。我学到了很多。我不知道不受信任的软件的安全性。很明显,这是我比较的两种不同类型的问题。 【参考方案1】:

它们并不“优越”——它们只是不同并且适合另一个目的。原型线程是模拟的,因此不是真正的线程。它们不会在多个内核上运行,并且它们都会在单个系统调用(socket recv() 等)上阻塞。因此,您不应将其视为解决所有多线程问题的“灵丹妙药”。 Java、Ruby 和 Python 的此类线程已经存在了相当长的一段时间。

另一方面,它们非常轻巧,因此它们确实使某些任务变得更快、更简单。由于代码和内存占用少,它们适用于小型嵌入式系统。如果您从头开始设计整个系统(包括小型嵌入式设备上惯用的“操作系统”),原型线程可以提供实现并发的简单方法。

另请阅读green threads。

【讨论】:

我怀疑任何严重的服务器都使用绿色线程,因为它们需要阻塞 IO(套接字)调用才能运行 Web 服务器不必使用阻塞调用,是吗?我认为非阻塞会更好。

以上是关于Native vs. Protothreads,哪个更容易?的主要内容,如果未能解决你的问题,请参考以下文章

react-native-image-picker vs expo ImagePicker

PHP| PEAR:MDB2 vs PDO vs Native-PHP(原始)

“flux”和“redux”与“react native”有啥关系?新的“react native”应该开始使用其中的哪一个?

哪一个是创建反应原生应用程序的正确程序。 create-react-native-app MyReactNative 还是 react-native init MyReactNative?

React Native 中的 flex vs flexGrow vs flexShrink vs flexBasis?

React Native——PureComponent VS Component