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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 17:31   #1
jojahti
Подтвердите свой е-майл
 
Регистрация: 27.07.2009
Сообщений: 437
По умолчанию Книжка по многопоточному программированию.

Вообщем посоветуйте плиз^^ хорошую литературу по многопоточности и всему с этим делом связанному?
jojahti вне форума Ответить с цитированием
Старый 15.10.2009, 17:36   #2
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Дж.Рихтер "Создание эффективных WIN32-приложений...чего-то там"

Могу выслать на е-майл в очень удобочитаемом формате.
Быть радикальным - значит понять вещь в её корне. К.Маркс

Последний раз редактировалось nazavrik; 15.10.2009 в 17:47.
nazavrik вне форума Ответить с цитированием
Старый 15.10.2009, 18:04   #3
LukS
Пользователь
 
Аватар для LukS
 
Регистрация: 22.01.2009
Сообщений: 20
По умолчанию

Создал поток - вот тебе как-бы вторая программа, связанная с первой. CreateThread создает поток, ставь все аргументы этой функции NULL, кроме адреса функции (3-й вроде... или 4-й). Создаешь функцию, и все. Теперь представь, что когда код доходит до CreateThread'а, после него идет обычный код, но в то время параллелно коду, идущему за CreateThread'ом идет другой код из функции указанной в CreateThread'е. Так-же в поток можно передавать аргументы при его создании, для этого в функции создании потока есть аргумент lpParameter, в него просто суешь какую-либо переменную и она передается в поток. (Глобальные переменные и классы так-же доступны потоку). Т.е. допустим тебе нужно одновременно слушать окно Windows (GetMessage(), TranslateMessage() и т.д., кароче цикл прослушки сообщений Windows) и одновременно слушать какой-либо сокет. Вот, пример:
Код:
SOCKET s; // глобальный сокет

DWORD WINAPI ListenSocket(LPVOID lParam)
{
	int i;
	char buf[1024*10];
	while(s != INVALID_SOCKET){ // Infinite loop для прослушки сокета
		while((i = recv(s, buf, 1024*10)) > 0)
		{
			// Что-либо делаем с данными из сокета
		}
	}
	return (DWORD)0;
}

int main()
{
	// Какой-либо еще код (создание окна, сокета, коннект)
	CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ListenSocket, NULL, NULL, NULL); // Создаем поток для прослушивания сокета
	// Далее занимаемся своими делами...
	while(GetMessage(&msg, NULL, NULL, NULL))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}
Вот кстати пример чата.

Последний раз редактировалось LukS; 15.10.2009 в 18:07.
LukS вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
У кого-нибудь есть эта книжка не в электронном виде? TwiX Обсуждение статей 5 22.09.2009 03:24
Записная книжка на С (Borland 3.1) Scotch Помощь студентам 2 13.04.2009 09:53
Записная книжка в Делфи! Без подключения БД! с помощью Record! sting БД в Delphi 8 15.12.2008 23:22
Записная книжка Черничный Софт 9 15.07.2008 04:44
телеф книжка где будут сохранены адреса и телефонные номера oblom Общие вопросы C/C++ 10 18.10.2007 02:11