zoukankan      html  css  js  c++  java
  • 事务同步多线程

    unit GetBillNoObj;

    interface

    uses
    System.Classes, System.SysUtils, Data.FMTBcd, Data.DB, Winapi.Windows,
    Data.SqlExpr;

    Type
    TGetBillNoObj = class(TThread)
    private
    Fext_id: string;
    Fsc_id: string;
    FBillNo: string;
    FEvent: THandle;
    protected
    procedure Execute; override;
    procedure GetBillNo; inline;
    public
    constructor Create; overload;
    destructor Destroy; override;
    procedure Run; inline;
    procedure Clear;
    property ext_id: string read Fext_id write Fext_id;
    property sc_id: string read Fsc_id write Fsc_id;
    property BillNo: string read FBillNo write FBillNo;
    end;

    implementation

    uses SqlconnectPool, SqlStoredProcPool, CommonFunction;

    procedure TGetBillNoObj.Clear;
    begin
    Fext_id := '';
    Fsc_id := '';
    FBillNo := '';
    end;

    constructor TGetBillNoObj.Create;
    begin
    FEvent := CreateEvent(nil, True, False, nil);
    inherited Create(False);
    FreeOnTerminate := True;
    end;

    destructor TGetBillNoObj.Destroy;
    begin
    CloseHandle(FEvent);
    inherited;
    end;

    procedure TGetBillNoObj.Execute;
    begin
    try
    while not Terminated do
    if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
    GetBillNo;
    except
    on E: Exception do
    begin
    LogInfo('TGetBillNoObj.Execute---' + E.Message);
    Exit;
    end;
    end;
    end;

    procedure TGetBillNoObj.GetBillNo;
    var
    c: TSQLConnection;
    p: TSQLStoredProc;
    begin
    try
    c := G_SqlConnectionPool.Lock;
    p := G_SqlStoredProcPool.Lock;
    try
    if Assigned(c) and Assigned(p) then
    begin
    p.Close;
    p.Params.Clear;
    p.SQLConnection := c;
    ssSetProcParam(p, 'sspGetSysCode');
    p.Params.ParamByName('@ext_id').Value:=ext_id;
    p.Params.ParamByName('@sc_id').Value:=sc_id;
    p.ExecProc;
    FBillNo := p.ParamByName('@sc_code').AsString;
    end;
    finally
    G_SqlConnectionPool.Unlock(c);
    G_SqlStoredProcPool.UnLock(p);
    end;
    except
    on E: Exception do
    begin
    LogInfo('TGetBillNoObj.GetBillNo---' + E.Message);
    exit;
    end;
    end;
    end;

    procedure TGetBillNoObj.Run;
    begin
    PulseEvent(FEvent);
    end;

  • 相关阅读:
    【HDU3032】Nim or not Nim?(博弈论)
    【BZOJ1022】小约翰的游戏(博弈论)
    【HDU1848】Fibonacci again and again(博弈论)
    【POJ1704】Georgia and Bob(博弈论)
    【BZOJ1299】巧克力棒(博弈论,线性基)
    【Luogu2197】NIM游戏(博弈论)
    【洛谷2252&HDU1527】取石子游戏(博弈论)
    【HDU1846】Brave Game(博弈论)
    【CF888G】Xor-MST(最小生成树,Trie树)
    长链剖分学习笔记
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3957510.html
Copyright © 2011-2022 走看看