2014-08-28 82 views
5

哪一個線程模型是C++ boost線程庫的使用?
1:1 (Kernel-level threading)
N:1 (User-level threading)
M:N (Hybrid threading)什麼是增強線程庫的模型

這些模型(來自維基)的區別:http://en.wikipedia.org/wiki/Thread_(computing)#Models

我檢查了升壓網站,並沒有關於它使用的線程模型提及。
我想這是一個1:1的,因爲它沒有提供類似的功能或yieldreschedule,但我不知道......

+0

用戶級線程是否在boost協程中實現?也可能依賴於平臺。 – 2014-08-28 04:14:07

+0

+1。這似乎是一個很好的問題......但我不確定我是否理解這個問題,那麼請詳細說明您提出的問題中提到的模型之間的區別?或者,給我們提供解釋它們的鏈接。 – Nawaz 2014-08-28 04:16:22

+0

@Nawaz http://en.wikipedia.org/wiki/Thread_(computing)#Models – pgplus1628 2014-08-28 05:14:30

回答

1

據本地線程,即,它會使用的平臺線程,至少在Linux,Windows和Mac中。

據我所知,線程映射將與Windows,Linux和MAC中的每個衍生線程的內核線程爲1:1。

我不確定其他平臺是否可以通過其他方式實現,但我不知道任何非內核線程實現與boost.thread API。

對於具有協作式多任務的用戶級「線程」,可以使用boost.coroutine。還有即將推出的boost.fiber庫,它與boost.coroutine幾乎相同,但它增加了一個用戶級的「線程」(這是庫中術語中的一種光纖)API和用戶級別的光纖調度程序。

  • 你可以找到boost.fiber here
  • 你可以找到boost.coroutine here
+1

thx爲鏈接,很有幫助。有沒有任何聲明boost.thread使用平臺線程的鏈接或代碼? – pgplus1628 2014-08-28 05:29:03

+0

看看http://www.boost.org/doc/libs/1_56_0/doc/html/thread.html上的文檔,你可以看到那裏的所有配置宏。 – 2014-08-28 06:26:11