Главная страница
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.049 c
15-1158126744
Ученик12
2006-09-13 09:52
2006.10.08
Ядро процессора


2-1159097526
Серый
2006-09-24 15:32
2006.10.08
Кнопка


2-1158733020
pr_spark
2006-09-20 10:17
2006.10.08
запуск IE с определенным сайтом


3-1155229904
serko
2006-08-10 21:11
2006.10.08
Выбор по дате!


15-1158310115
Cyrax
2006-09-15 12:48
2006.10.08
Case-средства в серьёзных проектах