아래의 1번과 2번의 로직이 서로 틀린지를 고수님께 물어보고 싶습니다.
환경은 2CPU의 하이퍼스레딩 환경에서 작업을 가정하여 주세요..
--- 1번 예제 --
function TMainF.PushMsgSendBuf(cmd:TCMD; var ip:String):Boolean;
var
Inx,
NextInx : Integer;
begin
EnterCriticalSection(CSMsgSend);
try
.....로직.....
finally
LeaveCriticalSection(CSMsgSend);
end;
end;
procedure test;
var
ip : String;
cmd:TCMD;
begin
if PushMsgSendBuf(cmd, ip) then
.....;
end;
--- 2번 예제 --
function TMainF.PushMsgSendBuf(cmd:TCMD; var ip:String):Boolean;
var
Inx,
NextInx : Integer;
begin
.....로직.....
end;
procedure test;
var
ip : String;
cmd:TCMD;
rst : Boolean;
begin
EnterCriticalSection(CSMsgSend);
rst := PushMsgSendBuf(cmd, ip);
LeaveCriticalSection(CSMsgSend);
if rst then
.....;
end;