zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    MySQL锁
    mysql服务性能优化—my.cnf配置说明详解
    springmvc请求参数获取的几种方法
    Linux mysql 添加远程连接
    Linux 操作 mysql
    Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html
    linux 下 安装nginx
    dubbo 实战总结
    分布式事务的几种方式
    精巧好用的DelayQueue 转
  • 原文地址:https://www.cnblogs.com/realhope/p/4270366.html
Copyright © 2011-2022 走看看