社区
语言基础/算法/系统设计
帖子详情
线程同步问题.
satan_dongdong
2004-10-11 06:55:34
我自己写了一个过程 myProc(str : string);
想在线程中使用同步myThread.Synchronize (myProc);
但是,DELPHI的Synchronize中用的方法必须是无参数的,那该怎么办呢?有什么好的解决方法吗?
...全文
197
19
打赏
收藏
线程同步问题.
我自己写了一个过程 myProc(str : string); 想在线程中使用同步myThread.Synchronize (myProc); 但是,DELPHI的Synchronize中用的方法必须是无参数的,那该怎么办呢?有什么好的解决方法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
satan_dongdong
2004-10-14
打赏
举报
回复
本来也想用SYSNCHRONIZE,但是要使用的过程或方法不能带参数,就不用了!!
sztony
2004-10-13
打赏
举报
回复
临界区的性能最好,如果使用SYSNCHRONIZE来同步,还不如不使用多线程.
satan_dongdong
2004-10-12
打赏
举报
回复
请问还有别的方法吗?
satan_dongdong
2004-10-12
打赏
举报
回复
UP
yueyixing
2004-10-12
打赏
举报
回复
你可以在线程中定义一个boolean型的变量,在线程的构造函数中给他赋true,结束的时候赋false。然后检测这个值就行,不过这个值得是全局变量才行
WGYKING
2004-10-12
打赏
举报
回复
同步方式无非就是互斥、临界区、信号量。。。
WGYKING
2004-10-11
打赏
举报
回复
0 建一个这样的类;
1 系统中创建一个TCriticalSection对象
2 线程执行操作前Enter
3 线程执行操作后Leave
4 退出系统前释放对象
WGYKING
2004-10-11
打赏
举报
回复
TSynchroObject = class(TObject)
public
procedure Acquire; virtual;
procedure Release; virtual;
end;
TCriticalSection = class(TSynchroObject)
protected
FSection: TRTLCriticalSection;
public
constructor Create;
destructor Destroy; override;
procedure Acquire; override;
procedure Release; override;
procedure Enter;
procedure Leave;
end;
{ TSynchroObject }
procedure TSynchroObject.Acquire;
begin
end;
procedure TSynchroObject.Release;
begin
end;
{ TCriticalSection }
constructor TCriticalSection.Create;
begin
inherited Create;
InitializeCriticalSection(FSection);
end;
destructor TCriticalSection.Destroy;
begin
DeleteCriticalSection(FSection);
inherited Destroy;
end;
procedure TCriticalSection.Acquire;
begin
EnterCriticalSection(FSection);
end;
procedure TCriticalSection.Release;
begin
LeaveCriticalSection(FSection);
end;
procedure TCriticalSection.Enter;
begin
Acquire;
end;
procedure TCriticalSection.Leave;
begin
Release;
end;
satan_dongdong
2004-10-11
打赏
举报
回复
能说得具体点吗?
WGYKING
2004-10-11
打赏
举报
回复
自己建立临界区
用
TRTLCriticalSection
比用Synchronize好多了。。。
satan_dongdong
2004-10-11
打赏
举报
回复
看了,不是很明白.现在只要能解决得了同步的问题就好了,什么都OK.
gemouzhi
2004-10-11
打赏
举报
回复
不好意思,手头没D的环境,就是borland的目录 啊
satan_dongdong
2004-10-11
打赏
举报
回复
DEMO的具体位置在哪儿?
WGYKING
2004-10-11
打赏
举报
回复
type TThreadMethod = procedure of object;
可以啊
怎么不可以?
satan_dongdong
2004-10-11
打赏
举报
回复
自己做互斥量,怎么做呢?
gemouzhi
2004-10-11
打赏
举报
回复
哦,对,看看,borland的demo中的那个先程排序,肯定能得到答案
satan_dongdong
2004-10-11
打赏
举报
回复
没写
WGYKING
2004-10-11
打赏
举报
回复
不能自己做互测量么?
gemouzhi
2004-10-11
打赏
举报
回复
no,差太远了,你的myProc是不是写在线程的execute下了。
Synchronize(这里是线程参数);
Synchronize是叫VCL的主线程安全执行VCL方法,U know?
POSIX多线程程序设计.pdf
内容简介 《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的
问题
,并给出了避免错误和提高性能等
问题
的有价值的建议。本书使用了大量注释过后 实例来解释实际的概念,并包括Pthreads的简单索引和对标准化的展望。 《POSIX多线程程序设计》适合有经验的C语言程序员阅读,也适合多线程人员参考。
WPF多线程演示
WPF多线程演示
下载 多线程编程技术开发资料 高清完整PDF版
多线程编程技术开发资料.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权
问题
,请联系删除!
什么是
线程同步
?
每一个服务进程的运行,都包含若干进程(Thread),线程是调度的基本单位,进程则是资源拥有的基本单位。 线程有自己的私有数据,比如栈和寄存器,同时与其它线程共享相同的虚拟内存和全局变量等资源,当多个线程同时读写同一份共享资源的时候,会引起冲突,这时候就需要引入
线程同步
机制使各个线程排队一个一个的对共享资源进行操作,而不是同时进行。 1.
线程同步
其实实现的是线程排队。 2.防止
线程同步
访...
什么是
线程同步
和互斥
线程同步
:每个线程之间按预定的先后次序进行运行,协同、协助、互相配合。可以理解成“你说完,我再做”。有了
线程同步
,每个线程才不是自己做自己的事情,而是协同完成某件大事。 线程互斥:当有若干个线程访问同一块资源时,规定同一时间只有一个线程可以得到访问权,其它线程需要等占用资源者释放该资源才可以申请访问。线程互斥可以看成是一种特殊的
线程同步
。 ...
语言基础/算法/系统设计
16,742
社区成员
33,237
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章