![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоко-безопасная запиcь в файл.
Павел_ © (2006-09-20 03:32:00)Помогите. Никак не могу понять:
нужно ли использовать критические секции при следующем способе
записи в файл из разных нитей ?
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;
Anatoly Podgoretsky (2006-09-20 14:27:00) [1]Можно обойтись эксклузивным открытием файла. Но можно воспользоваться TMultiReadExclusiveWriteSynchronizer.
Leonid Troyanovsky (2006-09-20 09:12:00) [2]
> Павел_ (20.09.06 03:32)
> нужно ли использовать критические секции при следующем способе
> записи в файл из разных нитей ?
Критическая секция здесь вовсе нелишняя.
В отличии от много остального.
--
Regards, LVT.