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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2012, 15:11   #21
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Просто хотелось бы узнать, какие еще проблемы могут возникнуть при использовании без синхронизации, кроме того, что мы потеряем контроль над значением переменной?
Лета вне форума Ответить с цитированием
Старый 12.06.2012, 17:54   #22
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну, собственно, ничего ХУЖЕ, чем потеря контроля за содержимым ячейки памяти не произойдет: монитор не сгорит, и физически диск не посыпется. Максимум - зависание с потерей данных и необходимостью переустановки ОС.
s-andriano вне форума Ответить с цитированием
Старый 13.06.2012, 01:16   #23
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Ого.
Спасибо!!
Лета вне форума Ответить с цитированием
Старый 13.06.2012, 01:52   #24
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

А вот с закрытием процесса или потока:
Зачем нужна CloseHandle, если и TerminateProcess останавливает процесс?
Я читала о том, что и TermainateProcess, и CloseHandle уменьшают счетчик числа пользователей объекта ядра на 1, и там же, в примерах: сначала вызывают TerminateProcess, а потом CloseHandle - выходит, что процесс закрываем один, а счетчик числа пользователей объекта ядра уменьшится на 2. В общем путаница вышла.
Лета вне форума Ответить с цитированием
Старый 13.06.2012, 02:42   #25
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

некоторая информация о процессе остается в памяти, пока не закрыт последний хендл на этот процесс, т.к. его (хендл) можно использовать в GetExitCodeProcess() или в WaitForSingleObject(). как только все хендлы на процесс закрыты с помощью CloseHandle(), эта информация удаляется. так что одного TermainateProcess() не достаточно.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 13.06.2012, 03:01   #26
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Понятно.) Спасибо!
Лета вне форума Ответить с цитированием
Старый 13.06.2012, 19:29   #27
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Вот снова вопросик возник все на счет той же функции и потока.
Вот функция:
Код:
WORD WINAPI Thread1(LPVOID lp)
{
	HWND hWnd = (HWND)lp;
	for(int i=0;i<500;++i)
	{
		TCHAR buf[10];
		wsprintf(buf,L"%d",rand()%100);
		Sleep(100);
		SetWindowText(hWnd,buf);
	}
	return 0;
}

При нажатии на кнопку я создаю поток, и эту функцию там задаю как входную потоковую,и вызываю эту же функцию для другого Edit в главном потоке.
Код:
case WM_COMMAND:
	{
		if(LOWORD(wp)==IDC_BUTTON1)
		{
		      h=CreateThread(0,0,Thread1,hSt,0,0);
		      Thread1(hSt1);
		}
       }
   return true;
Визуально выходит: сначала эта функция отрабатывает для главного потока, а потом для моего созданного потока.
Сначала я подумала, что производный поток отправляет сообщения WM_PAINT в главный,который занят функцией, поэтому и не обрабатывает пока другие приходящие сообщения, но потом все функции(входную потоковую, и функцию высказывающуюся в главном потоке) определила для обычных статиков, а результат остался таким же: сначала идет перебор на одном статике, и только потом на втором.

Последний раз редактировалось Лета; 13.06.2012 в 19:34.
Лета вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
[Проблема] - Прервать закачку, закрыть поток(tthread) Функция(WinInet) Человек_Борща Работа с сетью в Delphi 0 14.12.2010 20:21
Поток. Не получается создать поток. Выдает ошибки при запуске bigory Общие вопросы по Java, Java SE, Kotlin 3 23.09.2010 00:40
поток Артэс Общие вопросы C/C++ 3 09.12.2009 22:20
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50