2010-08-11 93 views
1

我正在處理C中的一個項目,該項目要求線程在獨立的CPU上運行,而不是初始化過程。我正在使用pthread庫來創建這些線程。我使用sched_setaffinity將主進程固定到一個cpu。我可以對每個線程執行相同的操作,將它們固定到獨立的CPU上嗎?固定pthreads內存和CPU

我也固定主流程的記憶。在創建pthreads之前,是否會調用mlockall(MCL_CURRENT | MCL_FUTURE)來固定pthreads使用的所有內存,或者是否需要在每個pthread中再次調用它?

在此先感謝。

回答

5

在Linux上你有pthread_attr_setaffinity_np,但作爲np結果表明是非便攜式又名延伸。

3

內存在進程中的所有線程之間共享,因此每個進程調用mlockall不止一次是沒有意義的。

此外,內存由系統上的所有CPU共享。 mlockall API只能防止操作系統將進程的內存頁面寫入磁盤,並且與將內存鎖定到CPU無關。