Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: 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 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.048 c
15-1158568278
deftemp
2006-09-18 12:31
2006.10.08
Perevod teksta s angliiskogo na russkiy cherez perevodchik


15-1158484497
PHPDeveloper
2006-09-17 13:14
2006.10.08
Вопрос по БД


2-1158835939
evgenij_
2006-09-21 14:52
2006.10.08
RAVE REPORT


2-1158106874
Not
2006-09-13 04:21
2006.10.08
Подскажите пример исходника программы работающей с dll ?


2-1158658563
Lera
2006-09-19 13:36
2006.10.08
Сообщения windows