2012-06-18 2 views
1

Я занимаюсь разработкой многопоточного прослушивателя сокетов (daemon).Сохраните список строк для каждой темы

Я успешно реализовал многопоточность с использованием библиотеки pthread.

Когда устройство подключается к демону его отправить это идентификационный номер мой вопрос:

Как сохранить этот идентификационный номер для каждого потока, так что, когда я получаю некоторые данные из этого устройства, чтобы узнать, что это ID.

В delphi это называется threadvar (переменная, которая выделяется для каждого потока). Если это невозможно, есть ли библиотека, которую я могу использовать для хранения списков? Я не планирую изобретать водоворот (например, сделать свой собственный связанный список)

Я использую GNUCC на Linux Mint

ответ

2

Было бы легче ответить, если бы мы вам код, но:

  • Если вам нужна локальная переменная потока с pthread, просто выделите ее в стеке функции , которая запускается в потоке (эта локальная переменная потока будет указателем на ваш список строк).
  • Вы можете использовать Glib, у которого есть отдельные и двунаправленные списки для хранения ваших строк. Убедитесь, что вы освободили список в конце функции, которая запускается в потоке
  • Вы можете передать данные функции, которая будет пронумерована через указатель void * (неясно, нужно ли это делать)
+0

+1 для не предлагая TLS. –

1

Я думаю, что вы ищете данные, относящиеся к потоку, для хранения переменных; затем посмотрите на pthread_setspecific() и pthread_getspecific().

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