• Delphi临界区的使用


    在开发一个平板点餐软件后台订单打印程序时,使用线程订单打印,为防打印阻塞使用临界区。


    1
    类: 2 3 type 4 MYPARA=record 5 title:pchar; //标题 6 str:pchar; 7 flag:integer; //标志 8 end; 9 PMYPARA=^MYPARA; 15 变量: ThreadId1:DWORD; 16 p:PMYPARA; 17 18 CSprintjz:TRTLCriticalSection; {临界区信息} 19 20 h2:THandle; 26 1.打印线程: 27 28 {初始化打印单据参数} 29 getmem(p,sizeof(p));//分配内存 30 p.title:='结帐单'; // 31 p.str:=''; //空 表示是第一次打印 32 p.flag:=0; 33 34 //开启线程: 36 h2:=CreateThread(nil, 0, @printjzdd,p,0, ThreadId1); 40 //线程函数printjzdd: 44 function printjzdd(Para:PMYPARA):integer;stdcall; 45 begin47 {进入打印线程的临界区} 48 EnterCriticalSection(CSprintjz); 49 result:=-1; 50 try 51 new( Pprintoneember); 52 Pprintoneember.No:=2; 53 Pprintoneember.tt:=pchar('');55 Pprintoneember.flag:=Para^.flag; 56 Pprintoneember.tdh:=g_tdh; 57 Pprintoneember.dd:=pchar(''); 58 Pprintoneember.Tno:=pchar(g_Tno); 59 {打印订单} 60 printdd_one(Pprintoneember); 61 62 MainForm.Memo1.Lines.Add('启动打印订单线程'); 63 except 64 LeaveCriticalSection(CSprintjz); 65 MainForm.Memo1.Lines.Add('启动打印订单线程err'); 66 exit; 67 end; 68 MainForm.Refreshzp(1); 69 MainForm.htsj(7);{统计营业额 } 70 LeaveCriticalSection(CSprintjz); 71 result:=1; 73 end;
  • 相关阅读:
    java操作docker示例(docker-java)
    istio实现对外暴露服务
    istio实现自动sidecar自动注入(k8s1.13.3+istio1.1.1)
    k8s1.13.3安装istio(helm方式)
    wrk http压测工具介绍
    etcd 相关介绍
    openresty 常用API学习
    Lua 相关知识点
    Lua 获取table的长度
    Lua 字符串相关操作
  • 原文地址:https://www.cnblogs.com/realhope/p/4270366.html
Copyright © 2020-2023  润新知