потоки
От: Аноним  
Дата: 03.03.05 20:28
Оценка:
подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?
Re: потоки
От: TK Лес кывт.рф
Дата: 03.03.05 20:30
Оценка:
Hello,
> подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?

Послать в другой поток сообщение.
Posted via RSDN NNTP Server 2.0 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: потоки
От: Аноним  
Дата: 03.03.05 20:34
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello,

>> подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?

TK>Послать в другой поток сообщение.


а можно пример, если не трудно?
Re[3]: потоки
От: TK Лес кывт.рф
Дата: 03.03.05 20:41
Оценка:
>>> подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?
> TK>Послать в другой поток сообщение.
> а можно пример, если не трудно?

Сообщения можно посылать через некоторую общую область данных (например, Singleton объект). Либо, можно ничего не слать, а каждый поток будет читать поле одного и тогоже класса сериализуя доступ через System.Threading.Monitor
Posted via RSDN NNTP Server 2.0 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: потоки
От: Other Sam Россия  
Дата: 03.03.05 21:37
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

А>подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?


Если потоки в одном процессе (в терминах потоков/процессов виндов), то просто из одного потока читай переменную другого потока. Кстани переменные, как и память вообще принадлежит процессу а не потокам.

В дот нэт — тоже все просто.
x // если переменная глобальная
someObject.X // если переменная является членом глобального объекта
this.X // если переменная - является членом текущего класса и т.д.
Re: потоки
От: mukos Голландия  
Дата: 04.03.05 07:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>подскажите плз как можно в одном потоке получить значение переменной из другого потока(во время его выполнения)?


Ну самый простой путь-что бы переменная была глобальной для обоих потоков
или при создании потока передать в него адрес переменной в качестве указателя(LPVOID)
а потом разыменовать.
типа MyType* t=(MyType*)lParam;
Если нужно отслеживать изменение переменной в другом потоке, то втом другом, потоке, можно воспользоваться
функцией PostThreadMessage . (по моему пишется так) и передать значение в качестве параметра функции.
Только в том потоке , где нужно отловить изменения нужен цикл обработки сообщений,
и надо обьявить свое сообщение типа.. #define UM_MYMESSAGE WM_USER+1.
В общем все что пришло в голову на скорую руку....
С удовольствием узнаю другие варианты
Весь мир — Кремль, а люди в нем — агенты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.