问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

delphi 怎么实现多线程的同步

发布网友 发布时间:2022-04-30 23:54

我来回答

1个回答

热心网友 时间:2022-06-20 20:53

多线程同步
  "临界区"(CriticalSection): 当把一段代码放入一个临界区, 线程执行到临界区时就独占了, 让其他也要执行此代码的线程先等等;
  使用格式如下:
var CS: TRTLCriticalSection;   {声明一个 TRTLCriticalSection 结构类型变量; 它应该是全局的} 
InitializeCriticalSection(CS); {初始化} 
EnterCriticalSection(CS);      {开始: 轮到我了其他线程走开} 
LeaveCriticalSection(CS);      {结束: 其他线程可以来了} 
DeleteCriticalSection(CS);     {删除: 注意不能过早删除} 
多线程同步示例
  
 1 unit Unit1; 
 2  
 3 interface 
 4  
 5 uses 
 6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 7   Dialogs, StdCtrls; 
 8  
 9 type 
10   TForm1 = class(TForm) 
11     ListBox1: TListBox; 
12     Button1: TButton; 
13     procere FormCreate(Sender: TObject); 
14     procere FormDestroy(Sender: TObject); 
15     procere Button1Click(Sender: TObject); 
16   end; 
17  
18 var 
19   Form1: TForm1; 
20  
21 implementation 
22  
23 {$R *.dfm} 
24  
25 var 
26   CS: TRTLCriticalSection; 
27  
28 function MyThreadFun(p: Pointer): DWORD; stdcall; 
29 var 
30   i: Integer; 
31 begin 
32   EnterCriticalSection(CS); 
33   for i := 0 to 99 do Form1.ListBox1.Items.Add(IntToStr(i)); 
34   LeaveCriticalSection(CS); 
35   Result := 0; 
36 end; 
37  
38 procere TForm1.Button1Click(Sender: TObject); 
39 var 
40   ID: DWORD; 
41 begin 
42   CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); 
43   CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); 
44   CreateThread(nil, 0, @MyThreadFun, nil, 0, ID); 
45 end; 
46  
47 procere TForm1.FormCreate(Sender: TObject); 
48 begin 
49   ListBox1.Align := alLeft; 
50   InitializeCriticalSection(CS); 
51 end; 
52  
53 procere TForm1.FormDestroy(Sender: TObject); 
54 begin 
55   DeleteCriticalSection(CS); 
56 end; 
57  
58 end.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沙尘暴属于自然灾害吗 星配什么字好听男孩 女孩带星字叫什么名字好听又洋气 带星字优美人名 星字如何取名 带星字的名活泼的 非常潮流的星字名 成华区社保局地址 有什么平价又好用的防晒霜值得安利? 有哪些性价比比较高的物理防晒霜可以安利? 请问正常家用厨房水龙头,24小时不间断放水,10天能放掉多少吨水。 求助一下去外面奶茶店打工大概一天需要干多长时间。需不需要加班 30个鹅蛋放多少盐多少水 同步多线程的同步 奶茶店招长期工干三四个月算不算长期? 什么是线程的同步?为什么要实现线程的同步? 如何实现if语句中几个线程的同步 java 题目 什么是线程?如何实现多线程?如何实现线程同步? 说得具体些,通俗些。 Java如何实现多线程同步? 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 低头即是海,抬头便是山是什么意思 《大灌篮》中的那个曾志伟的女儿是谁?好可爱哦~ 曾志伟女儿图片 曾宝仪是曾志伟的女儿吗? 多线程如何同步 曾志伟女儿罕见亮相,自曝48岁还未嫁的原因,究竟有何隐情? 蓝莓是水果吗,还是什么东西 曾志伟的女儿47岁,不结婚也不生孩子,如今怎样了? 曾志伟感情生活混乱,为什么女儿从不怨恨他? 曾志伟的女儿曾宝仪,现在状况如何? 今天下午两点到四点下雨吗? 认为奶茶店长期和短期的界限是多久? 高考中的提前批综合评价招生会不会影响第一志愿 比如综合评价不行了 奶茶店都要工作十个小时? 2021年报了山大的综合评价招生过了不去面试会对高考有影响吗 综合素质评价招生模式更公平吗? 在一家私人的奶茶店上班,每天上十一个小时,每个月只有两千块,想直接走人不干了? 综合素质评价乱写有什么后果? 做火锅用调料 奶茶店上班累不累? 学生综合素质评价对高考录取有什么影 综合素质评定对录取有影响吗 奶茶店店员适合长期干吗? 奶茶店每天工作时间13个小时,上三天休一天,时间合理吗? 53岁的女人还能怀孕么 2000元左右的手机买哪款比较好? 谁知道广东法院退休年龄 全国退休年龄规定 退休年龄最新规定2017 请问最新退休年龄规定?