2013-09-26 110 views
1

我在Linux中使用pthread,並且實現了兩個作爲線程運行的類(它從繼承了抽象POSIX線程的另一個類)。 Thread1正在啓動並停止thread2。在線程2運行期間,線程1正在調用線程2類的函數。我的問題是什麼時候thread1調用這個函數,什麼時候執行?它是否在調用時及時執行,以便thread2執行此方法的操作並在此後繼續停止?Linux線程執行流程

+3

你寫的東西沒有意義。線程中的線程不是一個類。 pthread中沒有類。發佈代碼並慢慢準確地解釋你在做什麼。 – Dariusz

回答

3

請勿混淆線程。類和線程是獨立和不相關的概念。從不同的執行代碼不會導致代碼在不同的線程中運行。在線程X上調用的任何方法都將在線程X上運行。

+0

例如有兩種方法。一種方法無限期運行(例如run()),另一種方法由其他線程調用。我的問題是,當第二個方法被執行時被其他線程調用?由於thread1正在連續執行第一個方法,它是否停止執行它,並開始執行第二個方法,並在完成時繼續它在第一個方法中停止的位置。 –

+0

應用我的最後一句話:「線程X上調用的任何方法都將在線程X上運行。」當你從另一個線程調用一個方法時,它將在另一個線程上運行。第一個線程對此方法調用一無所知;這個方法屬於哪個* class *無關緊要。類和線程是獨立和不相關的概念。 –

+0

確定它會在線程X上運行,但是它會在被調用的時候運行嗎? –

1

線程執行可調參數,這些參數在您的情況下可能是成員函數。如果在一個類中封裝一個phtread,只有相應的成員函數變成平行的,其他成員函數的其他調用仍然會在調用者線程上運行。