2013-09-26 112 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,只有相应的成员函数变成平行的,其他成员函数的其他调用仍然会在调用者线程上运行。