Есть ли инструмент для отслеживания связи между потоками; 1. работает в одном процессе 2. работает в разных процессах (IPC)Связь с потоком
ответ
Предполагаю, что вам нужно отследить это для отладки. В нормальных условиях это сложно сделать без специального письменного кода. Для аналогичной проблемы, с которой я столкнулся, у меня был буфер отслеживания для каждого процессора, который использовался для краткой записи времени и интересной операции, выполняемой текущим потоком. Журнал был круглый след, который используется для хранения данных, как это:
struct trace_data {
int op;
void *data;
struct time t;
union {
struct {
int op1_field1;
int op1_field2;
} d1;
struct {
int op2_field1;
int op2_field2;
} d2
} u;
}
Журнал трассировки был массив этих структур длины 1024, по одному для каждого процессора. Каждый поток используется для отслеживания операций, а также время для определения причинности событий. Поля, которые использовались для хранения данных в «союзе», зависели от выполняемой операции. Значение указателя «data» зависело и от «op». Когда программа использовалась для сбоя, я бы открыл ядро в gdb, и у меня был скрипт gdb, который будет проходить через журналы в каждом процессоре и распечатывать операционные системы и их соответствующие данные, чтобы узнать историю событий.
Для разных процессов вы можете выполнить такое ведение журнала в файле - по одному на процесс. Этот пример приведен в C, но вы можете сделать это на любом языке, который хотите использовать, если вы можете определить идентификатор CPU, на котором в данный момент работает поток.
Возможно, вы ищете что-то вроде Intel Thread Checker, если вы используете pthreads в (1).
Для связи между различными процессами (2) вы можете использовать Aspect-Oriented Programming (AOP), если у вас есть исходный код, или написать свою собственную оболочку для функций IPC и LD_PRELOAD
.
Редактировать: Упс, вы сказали отслеживание, а не проверка.
Это будет зависеть от операционной системы и среды разработки, которую вы используете. Если вы работаете с Visual Studio, посмотрите на инструменты в Visual Studio 2010.
- 1. Qt-связь с работающим потоком
- 2. Простая связь с потоком Java
- 3. Двусторонняя связь с потоком Java
- 4. Spring Webflow 2.0 - связь с другим потоком
- 5. асинхронная связь с потоком от JOptionPane
- 6. Связь с потоком Android для диалога прогресса
- 7. Связь между потоком Java и потоками ОС
- 8. Связь с фоновым потоком на главный через Greenrobot Eventbus
- 9. python TCP-связь, связанная с потоком, задержка и ошибка
- 10. Проблемы с потоком и потоком
- 11. Выбор между процессом и потоком и межпроцессорная (потоковая) связь
- 12. транспортир: какова связь между потоком управления и циклом событий javascript?
- 13. Связь между основным потоком и рабочими потоками в android
- 14. Простая проблема с потоком
- 15. Связь между хелперным потоком ядра и кодом уровня ядра
- 16. HTML5: Синхронная связь между потоком веб-работников и основной нитью
- 17. Какова связь между методом main() и основным потоком в Java?
- 18. Связь между родительским и дочерним потоком в Java
- 19. Какая связь между потоком java и системной нитью
- 20. Обмен данными с потоком данных Spark с потоком
- 21. Резервное управление потоком управления потоком
- 22. Избегайте NoSuchElementException с потоком
- 23. C# Проблемы с потоком
- 24. std :: проблемы с потоком
- 25. Дисплей анимации с потоком
- 26. beginBackgroundTaskWithExpirationHandler с текущим потоком
- 27. Проблемы с потоком Python
- 28. Управление потоком с исключением
- 29. Confused с Потоком конструкторами
- 30. Совместимый с потоком AtomicInteger
В какой операционной системе? Какой язык программирования? – Oded
и что вы подразумеваете под «связью»? – 2010-01-12 12:26:29
обмен данными, например. – reonze