powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Thread и открытие файла
17 сообщений из 17, страница 1 из 1
Thread и открытие файла
    #32953201
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день, столкнулся с такой вот проблемкой: создаю две нити (на разные функции), каждая функция открывает СВОЙ файл и пишет туда чего-то. так вот пишут они в один файл (открытый первой нитью).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	RadiusProcess[ 0 ]=CreateThread( 0 ,(DWORD) 0 ,
		  	    (LPTHREAD_START_ROUTINE)RadiusAuth,
			     lparam,(DWORD) 0 ,NULL);

	RadiusProcess[ 1 ]=CreateThread( 0 ,(DWORD) 0 ,
			    (LPTHREAD_START_ROUTINE)RadiusAcct,
			     lparam,(DWORD) 0 ,NULL);
если же вставить Sleep между их созданием - все ок. в чем проблемка?
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953273
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вдогонку
более того если задержку ставить не между созданием нитей, а в одной из функций ПЕРЕД открытием файла, то тоже помогает. без задержек пробовал печатать дескрипторы открытых файлов - они одинаковы (хоть и открывались ДВА РАЗНЫХ файла)
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953279
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нехорошо писать одновременно из разных потоков в один файл - заключи код записи в файл в критическую секцию.
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953291
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИнтеграторНехорошо писать одновременно из разных потоков в один файл - заключи код записи в файл в критическую секцию.
они открывают два файла и, соответственно, писать должны в разные, только запись идет какого-то в один.
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953313
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите код
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953322
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код создания нитей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	RadiusProcess[ 0 ]=CreateThread( 0 ,(DWORD) 0 ,
		  	    (LPTHREAD_START_ROUTINE)RadiusAuth,
			     lparam,(DWORD) 0 ,NULL);

	RadiusProcess[ 1 ]=CreateThread( 0 ,(DWORD) 0 ,
			    (LPTHREAD_START_ROUTINE)RadiusAcct,
			     lparam,(DWORD) 0 ,NULL);
одна
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void RadiusAcct (LPVOID lparam)
{
	PARAMETER* param=(PARAMETER*)lparam;

	FILE* fp=fopen("c:\\acct.txt","w");

	while (!(*param->StopEvent)) 
	{
		fprintf(fp,"acct\n");
		Sleep( 1000 );
	}
	fclose (fp);
}
вторая
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void RadiusAuth (LPVOID lparam)
{
	PARAMETER* param=(PARAMETER*)lparam;

	FILE* fp=fopen("c:\\auth.txt","w");

	while (!(*param->StopEvent)) 
	{
		fprintf(fp,"auth\n");
		Sleep( 1000 );
	}
	fclose (fp);
}
Код: plaintext
[/SRC][SRC c++]
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953367
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня всё прекрасно работает, как и должно быть ;)
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953378
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интегратору меня всё прекрасно работает, как и должно быть ;)
гм... мне похоже везет меньше - этот код же упрямо пишет в один файл
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953398
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно дело в разнице crt библиотек(или какая там stdio.h реализует)
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953412
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex_kвозможно дело в разнице crt библиотек(или какая там stdio.h реализует)
пробовал и через open файл открывать - тоже самое
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953444
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интегратору меня всё прекрасно работает, как и должно быть ;)
у меня на трассировке тоже все ок, а просто ехешник запускаю - ни в какую
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953520
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex_kвозможно дело в разнице crt библиотек(или какая там stdio.h реализует)
спасибо за добрый совет :)
LIBCMT.LIB Multithread static library, retail version
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32953867
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и вообще насколько я слышал ,не больно то и рекомендуют использовать
CreateThread функцию , она устарела и соталась только для поддержки Win16
юзай лутьше BeginThread/BeginThreadEx


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32954915
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartда и вообще насколько я слышал ,не больно то и рекомендуют использовать
CreateThread функцию , она устарела и соталась только для поддержки Win16
юзай лутьше BeginThread/BeginThreadEx


ш
(';')
(V),(V),,
Код: plaintext
 JS 


Что вы батенька путаете :) CreateThread() - функция WinAPI
_beginthread() - функция сишной библтотеки, её отличие в том что она инициализирует CRT. CreateThread() естевтенно это делать не может, но CRT будет проинициализированно при первом же обращении к любой функции Стишной стандартной библиотеке.
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32954918
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvsh alex_kвозможно дело в разнице crt библиотек(или какая там stdio.h реализует)
спасибо за добрый совет :)
LIBCMT.LIB Multithread static library, retail version

Хехе - а ты что на single-threaded crt потоки создавал ?
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32955296
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot ИнтеграторХехе - а ты что на single-threaded crt потоки создавал ? [/quot]
угу, теперь умнее буду :)
...
Рейтинг: 0 / 0
Thread и открытие файла
    #32955648
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интегратор JibSkeartда и вообще насколько я слышал ,не больно то и рекомендуют использовать
CreateThread функцию , она устарела и соталась только для поддержки Win16
юзай лутьше BeginThread/BeginThreadEx


ш
(';')
(V),(V),,
Код: plaintext
 JS 


Что вы батенька путаете :) CreateThread() - функция WinAPI
_beginthread() - функция сишной библтотеки, её отличие в том что она инициализирует CRT. CreateThread() естевтенно это делать не может, но CRT будет проинициализированно при первом же обращении к любой функции Стишной стандартной библиотеке.

Аха , точно , напомнил .
значит я вообще с чемто другим попутал :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Thread и открытие файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]