Главная страница
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.073 c
15-1158490716
X9
2006-09-17 14:58
2006.10.08
компиляция программ во FreePascal для MS-DOS


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


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


15-1158557887
Ega23
2006-09-18 09:38
2006.10.08
С Днём рождения! 18 сентября


15-1158687405
TUser
2006-09-19 21:36
2006.10.08
Зачем флудить?