2009-01-31 54 views
2

我只是偶然發現了Protothreads。由於上下文切換是顯式的,它們似乎優於本地線程。原生與原始線程相比,哪個更容易?

我的問題是。使這個多線程編程再次變得簡單嗎?

(我是這麼認爲的,但有我錯過了什麼?)

+0

「上下文切換是明確的」。所以我們回到Windows 3和合作多任務。我不會說沒有預佔權的多線程編程是「容易的」 - 避免競爭和死鎖更容易,但更難以避免一個失控的任務使系統無響應。 – 2009-01-31 12:41:33

+0

...嵌入式程序員不太關心後者。他們習慣於不得不做出實時保證,所以他們知道很多方法來避免不可中斷的慢操作。如果相同的技術適用於您的應用程序,那麼線程可能是不必要的開銷。 – 2009-01-31 12:51:11

回答

5

他們不是「上級」 - 他們只是不同的,適合其他用途。 Protothreads是模擬的,因此不是真正的線程。它們不會在多個核心上運行,並且它們將全部阻塞在一個系統調用(套接字recv()等)上。因此,您不應該將其視爲解決所有多線程問題的「銀彈」。這種線程在Java,Ruby和Python中已經存在很長一段時間了。

另一方面,它們非常輕便,所以它們可以使一些任務更快更簡單。由於低代碼和內存佔用,它們適用於小型嵌入式系統。如果您從頭開始設計整個系統(包括小型嵌入式設備上慣用的「OS」),則protothreads可以提供一種實現併發的簡單方法。

也讀於green threads