泥 泥瓦匠 Unregistered / Unconfirmed GUEST, unregistred user! 2004-06-03 #1 难道线程中的自定义方法执行时达不到多线程的效果? 必须得把代码写到Execute方法中,才能达到多线程的效果么? 如果是直接调用线程的对象的某个方法,不能达到多线程效果?
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2004-06-03 #2 这是在TThread的实现中的ThreadProc里的代码,ThreadProc是调用CreateThread时指向的过程。 ThreadProc里的代码很简单: try if not Thread.Terminated then try Thread.Execute; except Thread.FFatalException := AcquireExceptionObject; end; finally 后面都是出错处理。 他指名道姓的执行Execute,也就是说只有Execute方法里的部分被异步执行。
这是在TThread的实现中的ThreadProc里的代码,ThreadProc是调用CreateThread时指向的过程。 ThreadProc里的代码很简单: try if not Thread.Terminated then try Thread.Execute; except Thread.FFatalException := AcquireExceptionObject; end; finally 后面都是出错处理。 他指名道姓的执行Execute,也就是说只有Execute方法里的部分被异步执行。
T TYZhang Unregistered / Unconfirmed GUEST, unregistred user! 2004-06-03 #3 其实,Execute就像c中的main函数,如果一段代码没有被main函数直接或间接的调用,就永远不会被执行。
泥 泥瓦匠 Unregistered / Unconfirmed GUEST, unregistred user! 2004-06-03 #4 那么就是说,我直接调用线程的自定义方法,是和调用非线程对象的方法起到一样的效果 只有通过用线程本身的Execute方法调用,才能达到多线程效果?
泥 泥瓦匠 Unregistered / Unconfirmed GUEST, unregistred user! 2004-06-03 #7 那么我要是 在EXECUTE里进行休眠处理,等于整个线程被停止执行。 当有新的消息过来时,叫起线程,但执行的不是EXECUTE里的代码。 这样能达到多线程的效果么