在线等待-100分 怎么在程序中创建2个线程,让他们各干各的事情

egg0817 2004-07-31 03:00:41
例如 一个做加法 一个做乘法 主vcl线程 不参与
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linzhengqun 2004-07-31
  • 打赏
  • 举报
回复
dos是单线程的 而Windows是多线程的,用Windows可以一边敲键盘一边听歌,而dos则不行?

这不是同一个概念,一边键盘一边听歌那个是多任务,而不是多线程
线程是指同一个进程中,也可以粗略地说在一个程序中同时做不同的事情

比如你的程序做一个长时间的运算,如果是单线程,将导致你的主程序窗口定住不动,而如果是多线程,你的主窗口仍可以做其他的操作.
而事实上并不会比单线程快,甚至会慢一些,因为CPU要分出一个时间来处理其他的操作.
FOX7899 2004-07-31
  • 打赏
  • 举报
回复
作线程特别要小心。不好控制,没法用断点来调试线程中的事
FOX7899 2004-07-31
  • 打赏
  • 举报
回复
dos是单线程的 而Windows是多线程的,用Windows可以一边敲键盘一边听歌,而dos则不行。
漂白猪 2004-07-31
  • 打赏
  • 举报
回复
能否打个形象一点的比方,3Q!~
linzhengqun 2004-07-31
  • 打赏
  • 举报
回复
可能不会快,但可以使你的主程序可以正常的操作其他事情
boatzm 2004-07-31
  • 打赏
  • 举报
回复
创建两个线程就能完成你的要求,因为线程本来就是独立的,但是你不能访问共享的东西哦,要不可能出问题!~
漂白猪 2004-07-31
  • 打赏
  • 举报
回复
我是初学者,问一下,这样程序运算会比单线程快么?
多线程有哪些应用?
linzhengqun 2004-07-31
  • 打赏
  • 举报
回复
//定义两个线程类
TmyThread1=class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
TmyThread2=class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
//声明两个线程变量以及一个全局变量,:
var
Thread1:TmyThread1;Thread2:TmyThread2;

创建两个线程的实例并开妈执行:
Thread1:=TmyThread1.Create(False);
Thread2:=TmyThread2.Create(False);

线程中的实现代码:
procedure TmyThread1.Execute;
begin
FreeOnTerminate:=True;
//加法
end;
procedure TmyThread2.Execute;
begin
FreeOnTerminate:=True;
//乘法
end;

不过前提要保证,两个线程不同时操作相同变量 .
tsst 2004-07-31
  • 打赏
  • 举报
回复
不理解!
线程本来就是各做各的!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧