Я использую потоки ACE и каждый поток должен иметь свой собственный элемент int. Возможно ли это?Есть ли способ использовать локальные переменные потока при использовании ACE?
ответ
ACE называет это «конкретным хранилищем». Проверьте это: ACE_TSS. Это все, что я знаю об этом, извините, я не могу помочь.
На странице Википедии thread-local storage говорится, что есть способ pthreads сделать это тоже.
Иногда он вызывает TSS или TSD (данные, относящиеся к потоку) в pthreads. Вот ссылка, которая описывает, как создавать такие данные с помощью API pthreads: http://www.opengroup.org/onlinepubs/000095399/functions/pthread_key_create.html. На UNIX/UNIX-подобных платформах ACE просто использует pthreads под капотом. – Void
Его конкретная платформа. Windows, например, вы должны использовать __declspec(thread)
. Компилятор будет использовать TLS API (TlsAlloc, TlsFree и друзей), а на Win32 вы должны всегда использовать FLS (Fibre Local Storage) вместо TLS, но TLS API молча перенаправляет вас в FLS в любой современной версии Win32.
Да. Вы можете использовать шаблон ACS_TSS<type>
, который предназначен для «хранилища с конкретными потоками» (то есть: локальные переменные потока).
Подробнее см. В docs on ACE_TSS.
Знаете ли вы, как я могу установить начальное значение для всех потоков? – amitlicht
GCC напрямую поддерживает TLS for some targets. Вы можете использовать ключевое слово для определения локальных переменных потока (должно быть статическим или глобальным).
В самом деле в libACE есть встроенный в поток материал, вы можете проверить documentation и посмотреть на example code.
Невозможно установить ACE_TSS начальное значение для всех потоков; вы можете легко установить начальное значение сразу после входа в вашу функцию потока.
- 1. Есть ли способ использовать локальные переменные во всех модулях?
- 2. Есть ли в группе переменные-локальные переменные?
- 3. Автозаполнение редактора ACE удаляет локальные переменные
- 4. Есть ли способ скрыть номера строк в редакторе Ace?
- 5. Есть ли простой способ использовать переменные базового класса?
- 6. Локальные переменные Javascript - стоит ли их использовать?
- 7. Как использовать локальные переменные при вызове метода?
- 8. Есть ли способ использовать локальные элементы xsd в WSDL
- 9. Безопасны ли локальные переменные?
- 10. Java-потоки - переменные, локальные для потока
- 11. Являются ли локальные переменные потокобезопасными?
- 12. Есть ли способ переключить переменные в for?
- 13. Java - неизменные локальные переменные
- 14. Отражая локальные переменные
- 15. Есть ли способ перемотки назад или назад при использовании JsonReader?
- 16. Полиморфизм и локальные переменные
- 17. Как использовать локальные переменные в лямбда-выражения
- 18. Есть ли способ использовать переменные в многострочной строке в Python?
- 19. Есть ли способ использовать константные переменные в определениях других констант?
- 20. Есть ли способ использовать переменные raw_input в random.randint?
- 21. Есть ли способ использовать переменные ключи в литеральном объекте JavaScript?
- 22. Есть ли более простой способ изменить и использовать глобальные переменные?
- 23. Есть ли способ использовать переменные бритвы в PageTemplate Features
- 24. C#: Есть ли способ использовать выражения как переменные/параметр?
- 25. Simulate нить локальные переменные
- 26. Есть ли способ выполнить действие при вводе потока?
- 27. Есть ли программный способ скрыть курсор в редакторе Ace?
- 28. Есть ли способ скрыть вертикальную линейку в редакторе Ace?
- 29. Есть ли способ удалить круговые ссылки в Ace
- 30. Есть ли способ запросить HTML-код в редакторе кода Ace?
Из любопытства вам действительно нужно использовать TSS? Можете ли вы уйти просто объявлением переменных в стеке вашего потока, или вы ищете какой-то способ предотвратить доступ других потоков к вашей переменной? Если последнее, почему бы не использовать замки? Некоторым людям кажется, что TSS - это главным образом костыль для устаревших интерфейсов (например, создание надежного потока errno), и что блокировки - лучший способ пойти. Я не сторонник того или другого. YMMV. – Void
Я думаю, что TSS на самом деле является самым элегантным решением в этом случае. У меня есть n потоков, каждая должна иметь свою собственную переменную (со своим значением). – amitlicht
Вы упомянули, что каждый поток имеет свой «член». Это говорит о том, что вы используете классы для представления ваших потоков. Если да, то просто дайте классу нормальную переменную-член. Каждый поток имеет свой собственный экземпляр класса, поэтому он также имеет свою собственную переменную-член. –