Вниз
Скачать: CL | DM;

Потоко-безопасная запиcь в файл.   Найти похожие ветки 

← →
Павел_   (2006-09-20 03:32) [0]

Помогите. Никак не могу понять:
нужно ли использовать критические секции при следующем способе
записи в файл из разных нитей ?
function FileAddStringCS(pFile, pValue: PChar; var _CS: RTL_CRITICAL_SECTION): DWord;
begin
Result:=0;
EnterCriticalSection(_CS);
try
 FileAddString(pFile, pValue); // Пишет строку в файл
 ReallocMem(pValue, 0);
finally
 LeaveCriticalSection(_CS);
end;
end;

function FileAddStringThread(pValue: PChar): DWord;
begin
Result:=FileAddStringCS(PChar(TestFile), pValue, ERR_CS);
end;

function StringToPChar(const Sour: string): PChar;
begin
Result:=GetMemory(Length(Sour) + 1);
CopyMemory(Result, PChar(Sour), Length(Sour)+1);
end;

procedure FileAddStringEx(const Mess: string);
var
ThreadHand, ThreadID: DWord;
begin
try
 ThreadHand:=BeginThread(nil, 0, @FileAddStringThread,
                         StringToPChar(Mess), 0, ThreadID);
 if ThreadHand <> 0 then CloseHandle(ThreadHand);
finally
end;
end;


← →
Leonid Troyanovsky ©   (2006-09-20 09:12) [1]


> Павел_   (20.09.06 03:32)  

> нужно ли использовать критические секции при следующем способе
> записи в файл из разных нитей ?


Критическая секция здесь вовсе нелишняя.
В отличии от много остального.

--
Regards, LVT.


← →
Anatoly Podgoretsky ©   (2006-09-20 14:27) [2]

Можно обойтись эксклузивным открытием файла. Но можно воспользоваться TMultiReadExclusiveWriteSynchronizer.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.085 c
2-1158660773
Виталька 2006
2006-09-19 14:12
2006.10.08
Прогрессбар...


2-1158329105
Adios
2006-09-15 18:05
2006.10.08
string


15-1158325438
AntiUser
2006-09-15 17:03
2006.10.08
Интересные вопросы.


2-1159010403
Дмитрий В
2006-09-23 15:20
2006.10.08
Как записать байт в lpt порт


15-1158582991
wwwrr
2006-09-18 16:36
2006.10.08
Memo + Анимация




   Наверх