电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

[Delphi]多线程编程多线程同步之CriticalSection(临界区)VIP免费

[Delphi]多线程编程多线程同步之CriticalSection(临界区)_第1页
1/9
[Delphi]多线程编程多线程同步之CriticalSection(临界区)_第2页
2/9
[Delphi]多线程编程多线程同步之CriticalSection(临界区)_第3页
3/9
先看一段程序, 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); end ; var Form1: TForm1; implementation {$R *.dfm} function MyThreadFun(p: Pointer): DWORD; stdcall; var i: Integer; begin for i := 0 to 99 do Form1.ListBox1.Items.Add(IntToStr(i)); Result := 0; end; procedure TForm1.Button1Click(Sender: TObject); var ID: DWORD; begin CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Align := alLeft; end; end. 窗体文件: object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 154 ClientWidth = 214 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object ListBox1: TListBox Left = 9 Top = 9 Width = 121 Height = 97 ItemHeight = 13 TabOrder = 0 end object Button1: TButton Left = 131 Top = 112 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 1 OnClick = Button1Click end end 在这段程序中, 有三个线程几乎是同时建立, 向窗体中的 ListBox 1 中写数据, 最后写出的结果是这样的: 能不能让它们别打架, 一个完了另一个再来? 这就要用到多线程的同步技术. 前面说过, 最简单的同步手段就是 "临界区". 先说这个 "同步"(Synchronize), 首先这个名字起的不好, 我们好像需要的是 "异步"; 其实异步也不准确... 管它叫什么名字呢, 它的目的就是保证不冲突、有次序、都发生. "临界区"(CriticalSection): 当把一段代码放入一个临界区, 线程执行到临界区时就独占了,...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

[Delphi]多线程编程多线程同步之CriticalSection(临界区)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部