Вниз
Скачать: 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.027 c
3-1155018993
Dolmat
2006-08-08 10:36
2006.10.08
Какой порт по умолчанию IB слушает


1-1156939185
matyx
2006-08-30 15:59
2006.10.08
функция GetSystemTime выдаёт неправильное время


3-1155033655
DelphiLexx
2006-08-08 14:40
2006.10.08
Как в DBGrid e подсвечивать конец линии сетки определенной записи


2-1153135361
xman
2006-07-17 15:22
2006.10.08
File not found: Proxies.dcu


15-1158501484
NIK2006
2006-09-17 17:58
2006.10.08
Проги для наладонников ?




   Наверх