Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 01:11   #1
Psix0
 
Регистрация: 19.01.2011
Сообщений: 3
По умолчанию НЕ МОГУ РАЗОБРАТЬСЯ С ПОТОКАМИ

Доброй ночи.
Имею такой вором, мной написана dll и 2 приложения использующие эту dll. DLLMain в ней выглядит следующим образом:
Код:
// Точка входа в DLL
BOOL WINAPI DllMain (HANDLE hInst, DWORD dwReason, LPVOID IpReserved)
{
	BOOL bAllWentWell = TRUE;

	switch (dwReason)
	{
		case DLL_PROCESS_ATTACH: // Инициализация процесса
			memset((char *)&snd_pct, 0, sizeof(snd_pct)); // Очищаем
			memset((char *)&recv_pct, 0, sizeof(recv_pct)); // Очищаем
			count_pct = 0;
#ifdef _DEBUG
			std::cout << "DLL attath to PROCESS\n" << std::endl;
#endif
			break;
		case DLL_THREAD_ATTACH: // Инициализация потока
#ifdef _DEBUG
			std::cout << "DLL attach to THREAD\n" << std::endl;
#endif
			break;
		case DLL_THREAD_DETACH: // Очистка структур потока
#ifdef _DEBUG
			std::cout << "DLL deattach to THREAD\n" << std::endl;
#endif
			break;
		case DLL_PROCESS_DETACH: // Очистка структур процесса
			//
			// Деинициализирую сокеты, лучше это делать не в DllMain а в отдельной функции
			//
			break;
	}
	if(bAllWentWell) return TRUE;
	else			return FALSE;
}
Исходя из этого каждый раз при открытие нового потока приложением-сервером, должно писаться в консоли DLL attach to THREAD. Серверное приложение работает правельно и при открытие его оно выводит DLL attach to PROCESS, далее оно создает новый поток и пишит DLL attach to THREAD.
А в случае с клиентским приложением, которое по сути не должно открывать потоков и должно выводить
DLL attach to PROCESS
#

и дальше ожидать команд. Клиентская часть через какоето время 3 раза пишет DLL attach to THREAD, после чего сразу еще 3 раза DLL deattach to THREAD. Вот скрин
1.jpg
Некак не могу понять в чем дело, откуда беруться эти потоки. APIMonitor мне выдал следующее
2.jpg
Тоесть их создает csrss, зачем? Почему не такого в серверной части, которая работает с той же dll-кой?

Последний раз редактировалось Stilet; 22.01.2011 в 14:13.
Psix0 вне форума Ответить с цитированием
Старый 19.01.2011, 12:59   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

А почему бы системе (пользовательской частью которой является csrss) и не запустить пару потоков, чтобы обработать все ваши gethostbyname(), connect(), recv(), send()?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.01.2011, 08:04   #3
Psix0
 
Регистрация: 19.01.2011
Сообщений: 3
По умолчанию

Меня интересует вопрос, не почему так троисходит, а почему это происходт только в одном из приложений, вот так вот
Psix0 вне форума Ответить с цитированием
Старый 20.01.2011, 11:21   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну так покажите нам подобный отчет монитора по серверу, погадаем вместе
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 22.01.2011, 04:39   #5
Psix0
 
Регистрация: 19.01.2011
Сообщений: 3
По умолчанию

Что из этого тебя именно интересует?
1.jpg
Psix0 вне форума Ответить с цитированием
Старый 22.01.2011, 18:21   #6
like-nix
Форумчанин
 
Регистрация: 09.11.2009
Сообщений: 104
По умолчанию

Весь код выложить можете с проектом?

Лучше ввиде прикрепляемго файлика.

Последний раз редактировалось Stilet; 22.01.2011 в 21:02.
like-nix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться! Apsalon Microsoft Office Excel 1 28.12.2010 18:54
НЕ могу разобраться Smagulov85 БД в Delphi 9 29.09.2010 16:13
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21
Не могу разобраться semAz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2010 17:43