我最近要做个多线程的,请大家说说多线程方面的经验比如同步、管理等等,先谢!
解决方案 »
- SMARTCARD 熟悉的HELP
- 在用sql语句查询出数据记录后,怎样让DBGridEH的标题行不自动产生或者每列的标题为空字符串,我想自己设置每一列标题的值,但是又不想在sql中用as别名
- 如何修改收藏夹
- ***** 这句代码如何翻译?*****
- 急!请教:个别字段多条记录对应其它字段一条记录的问题
- Devexpress dxRibbon怎么隐藏form的title bar
- 告訴我一個好的關于delphi的網站?
- 如何让listbox在显示长句的时候能根据listbox的宽度自动换行?
- XMLDOCUMENT怎么才能读出流中的数据呢
- 怎么用delphi登陆论坛?
- 如何在dbgrid中控制每一列的输入,如在这个列失去焦点后判断这个列的text.value.
- 2个关于dll的问题---有经验者请进!!!
那就不知道了
只要用vcl的tthread,完全可以在execute结束以后给主线程发个消息,主线程得到这个消息以后负责读取thread对象里面的一个成员变量(这就是所谓的返回值,在execute之后由你负值),然后由主线程负责销毁线程对象。一定记住:tthread.freeonterminate:=false;
vcl提供了tcriticalsection类,使用很简单,只要所有对共享变量的访问都遵循这个访问规则就可以。
进程之间可以用mutex和waitforsingleobject msdn和delphi help里面都有写!
当然这个也可以用于线程。
否则会在主线程中保错, 还有多线程查询时,如果要显示查询数据,最好断开与
主线程的关联,查询完后,在关联起来,
线程池的使用,线程同步,使用线程千万不要使用公用变量,尽量把。
要不程序难以控制,容易出错。而且错误非常难找
不然,简单的线程,不应该到Delphi 网络编程/分布式开发问题 这个版块来问的;
其实,你只要在程序中,熟悉Apartment的用法就成了;
不是任何时候都要tthread.freeonterminate:=true;!
否则vcl干嘛还要留下这个属性让你操作呢?直接terminate以后自动free掉算了!你大概不明白我的意思,我是要主线程负责free其它线程阿!