社区
GAME,图形处理/多媒体
帖子详情
一个多线程,挂起,唤醒,结束。创建的问题希望能回答正确
hyf3246875
2011-03-30 08:59:45
我现在要用到delphi多线程,是delphi的,不要用API,但是不知道挂起,恢复,结束的代码演示,希望能有个高手帮忙解答一下。很感谢!~
...全文
233
6
打赏
收藏
一个多线程,挂起,唤醒,结束。创建的问题希望能回答正确
我现在要用到delphi多线程,是delphi的,不要用API,但是不知道挂起,恢复,结束的代码演示,希望能有个高手帮忙解答一下。很感谢!~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
funxu
2011-04-20
打赏
举报
回复
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
hThread: THandle;
num: Integer;
{线程入口函数}
function MyThreadFun(p: Pointer): Integer; stdcall;
begin
while True do
begin
num := Random(100);
end;
Result := 0;
end;
{建立并挂起线程}
procedure TForm1.Button1Click(Sender: TObject);
var
ID: DWORD;
begin
hThread := CreateThread(nil, 0, @MyThreadFun, nil, CREATE_SUSPENDED, ID);
Button1.Enabled := False;
end;
{唤醒并继续线程}
procedure TForm1.Button2Click(Sender: TObject);
begin
ResumeThread(hThread);
end;
{挂起线程}
procedure TForm1.Button3Click(Sender: TObject);
begin
SuspendThread(hThread);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 100;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Text := IntToStr(num);
end;
end.
至于线程结束可以用api
terminatethread
不过不建议这么做,会引起内存泄露
sforiz
2011-04-10
打赏
举报
回复
MyThread.Suspend 挂起
MyThread.Resume 恢复
iamduo
2011-03-31
打赏
举报
回复
不是说缺少参数吗?
Create的参数是 “是否挂起”
如果 true,则需要调用 resume 才能让线程运行。
如果 false,则直接进行 execute 中的代码。
dinoalex
2011-03-31
打赏
举报
回复
你的线程单元都没贴出来, 怎么查问题
hyf3246875
2011-03-30
打赏
举报
回复
谢谢了。我用delphi线程类创建了一个名字为mymath1 的线程,在主线程引用了unit2单元,也继承了。就是创建不了实例,这是代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses unit2;
var
thread1:mymath1;
procedure TForm1.Button1Click(Sender: TObject);
begin
thread1:=mymath1.create;
end;
end.
dinoalex
2011-03-30
打赏
举报
回复
之前那个帖子那里不是有[开始],[关闭]吗? 这个就是啦~~
多线程
面试59题(含答案)
对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。虽然重排序优化了性能,但也是会遵守一些规则的,并不能随便乱排序,一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。假的
多线程
,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,线程可以防止这个
问题
,多条线程同时运行,哪怕一条线程的代码执行读取数据阻。地址空间,
一个
线程死掉就等于整个进程死掉,所以多进程的程序要比
多线程
的程。法进行等待的线程等待目标线程运行
结束
而
唤醒
,一旦通过相关事件
唤醒
线程,线。
Linux之
多线程
挂起
失败就是函数调用失败,你就不能把自己放到等待队列里,继续向后走。条件可能并没有满足,但是我这个线程被
唤醒
了。比如很
多线程
在条件变量下等,等的时候 (在多CPU的情况下被
唤醒
),虽然大家会排队,但是在多CPU下执行代码的时候,有可能向目标条件变量发送条件就绪这样的指令,最后可能导致当前的线程被伪
唤醒
。再比如:我们现在的代码是只要别人生产一条数据,就把消费者
唤醒
了。
100道Java并发和
多线程
基础面试题大集合
前言 这篇文章主要是对
多线程
的
问题
进行总结的,因此罗列了100个
多线程
的
问题
。 这些
多线程
的
问题
来源于各大网站,可能有些
问题
网上有、可能有些
问题
对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的
问题
都会按照自己的理解
回答
一遍,不会去看网上的答案,因此可能有些
问题
讲的不对,能指正的
希望
大家不吝指教。整理了一份Java面试宝典完整版PDF 100个
问题
汇总 1、
多线程
有什么用?
一个
可能在很多人看来很扯淡的
一个
问题
:我会用
多线程
就好了,还管它有什么用?在我看来,这个
回答
更扯淡。所谓"知其然
面试官:
多线程
硬核50问!能
回答
一半就让你过
CPU的缓存是以缓存行(cache line)为单位进行缓存的,当多个线程修改相互独立的变量,而这些变量又处于同
一个
缓存行时就会影响彼此的性能。这就是伪共享现代计算机计算模型:CPU执行速度比内存速度快好几个数量级,为了提高执行效率,现代计算机模型演变出CPU、缓存(L1,L2,L3),内存的模型。CPU执行运算时,如先从L1缓存查询数据,找不到再去L2缓存找,依次类推,直到在内存获取到数据。为了避免频繁从内存获取数据,聪明的科学家设计出缓存行,缓存行大小为64字节。也正是因为缓存行的存在。
【Java
多线程
】
多线程
带来的的风险-线程安全、
多线程
五个经典案例
日常开发中如果用到
多线程
编程,也一定会涉及到线程安全
问题
线程安全这个
问题
就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程、
多线程
、actor、csp、async+await、定时器+回调 操作系统,调度线程的时候,是随机的 (抢占式执行) 正式因为这样的随机性,就可能导致程序的执行出现一些 bug 如果因为这样的调度随机性引入了 bug,就认为代码是线程不安全的,如果是因为这样的调度随机性,也没有带来 bug,就认为代码是线程安全的 这里的线程安全指的是有.
GAME,图形处理/多媒体
1,184
社区成员
14,330
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章