2010-11-01 3 views
1

В основном потоке я открываю новый поток, который получает количество новых сообщений пользователя (занимает около 5 секунд), и этот второй поток должен сохранить номер в некотором месте.Как делиться данными между потоками?

В основном потоке я должен проверить «какое-то место», и если это значение существует, я показываю его на странице.

Где я могу сохранить значение из второго потока, чтобы прочитать его из основного? Это значение уникально для пользователя, поэтому я не могу использовать статическое поле.

Благодарим за продвижение!

ответ

1

Вы можете использовать статический словарь с идентификатором пользователя как ключом и результат как значение. Защитите доступ к словарю с помощью блокировок. После того, как основной поток читает значение, вы можете очистить его от словаря.

1

Используйте критический раздел для защиты доступа к некоторым данным, когда несколько потоков могут его читать и записывать. Используйте экземпляр singleton для хранения данных, глобальной переменной, шаблона реестра или любого другого.

0

Как я это делаю, у меня есть вектор с элементами «ThreadData». Каждый начальный поток получает этот элемент при запуске и может обновлять эти данные (защищенные мьютексами). Основной поток просто проверяет некоторый флаг в элементе (ThreadState - Running, Idle, Stopped и т. Д.) И читает другие данные, которые обновил поток.

Смежные вопросы