Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу Глобальные переменные в потоке
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Dencraft Dencraft вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.09.2003
По умолчанию Глобальные переменные в потоке - 27.02.2004, 01:14

Вот создал я в процессе поток, создал глобальную переменную, в которую этот поток будет помещать опрашиваемую с порта информацию. Так вот, внутри функции этого потока глобальная переменная видна и изменяется. Но в основной программе эта переменная остается с нулевым значением, как бы я из потока в нее не писал. Пробовал эту переменную делать static - не помогает. Ведь, вроде, поток создается в одинаковом адресном пространстве с основной программы.
А вот если создать функцию в основной программе и передать в нее значение, которое уже в этой функции скопируется в эту переменную (обязательно static), то все нормально. В чем же дело?
Ответить с цитированием
  (#2 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 27.02.2004, 13:21

Покажи код, а там посмотрим что не так.
Ответить с цитированием
  (#3 (permalink)) Старый
Dencraft Dencraft вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.09.2003
По умолчанию 27.02.2004, 23:53

Вот приблизительно такой у меня код:


file.h:
Код:
...
static var=0;
...
file.cpp:
Код:
...
#include <file.h>
...

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
...
HANDLE tPortScan=CreateThread(NULL,
                                0,
                                 (LPTHREAD_START_ROUTINE)PortFunc,
                                 &dwThrdParam,
                                 0,
                                 &dwThreadId);
...

var; // а вот здесь var всегда равен 0

}

thread.cpp:

Код:
DWORD WINAPI PortFunc(LPVOID lpParam)
{

var = 1000; // вот внутри PortFunc var = 1000

    return 0;
}
Ответить с цитированием
  (#4 (permalink)) Старый
Mahler Mahler вне форума
Member
 
Сообщений: 237
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.11.2003
По умолчанию 28.02.2004, 15:19

А ты сделай PortFunc() в том же CPP файле где WinMain()
Ответить с цитированием
  (#5 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 28.02.2004, 15:44

Сделай так как сказал Mahler, или создай thread.h, в котором обяви эту функцию. К тому же переменная var будет доступна только в file.h
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Dencraft Dencraft вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.09.2003
По умолчанию 01.03.2004, 06:03

Большое спасибо, вроде разобрался - работает.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтобы глобальные переменные можно было вводить с Tdit Gal40na С/С++ 0 06.06.2011 00:41
Как перегнать данные из одной формы в другую , не используя глобальные переменные usik Visual C++ 9 07.01.2009 03:09
глобальные переменные Killa777 Prolog 1 31.08.2008 17:42
Глобальные переменные в SWI пролог Ant_vkl Prolog 0 22.05.2008 21:53
Таймер в потоке как создать Makavely C++ Builder 5 15.03.2008 12:12
Прогресс бар в отдельном потоке Андрейка C. Visual C++ 9 16.11.2006 20:06
Работа в потоке ruth С/С++ 1 15.05.2006 17:16
[b]Глобальные переменные[/b] neskif Офтопик 6 14.01.2006 19:20
Глобальные переменные в проекте MFC Application AlexRush Visual C++ 2 05.01.2006 17:17
Локальные переменные и глобальные в документе bird DHTML, JavaScript, VBScript 7 09.08.2004 11:14
Как создать глобальные переменные, которые будут доступны во всех юнитах Anonymous Delphi 2 06.11.2003 01:13
Глобальные переменные Sovenok PHP 4 18.07.2003 22:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов