2013-07-13 2 views
0

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

Есть ли способ определить, выполняют ли два удаленных потока один и тот же код или функцию?

Каждое предложение приветствуется! : D

+0

Можете ли вы немного понять. – pradipta

ответ

0

Хорошо, что трудно сказать, не зная, как вы планируете выполнять эту синхронизацию. Передаются ли две программы друг другу и/или третий мониторинг pgm?

В любом случае, есть по крайней мере 3 возможности:

Используйте ассоциативный контейнер, как карты в двух программах (или 3), которая соответствует до

  • потоковой идентификаторов нитей из двух программы (например pthread_self() получить ПИВ)
  • нить идентификаторами Linux (например gettid())

Или вы можете, возможно, MAK e использование pthread_setname_np() и pthread_getname_np(). Вы можете использовать их, чтобы дать каждому потоку в обеих программах одно и то же имя и, возможно, это станет полезным в некоторых сценариях обмена сообщениями. Вы также можете использовать макросы __FILE__, __LINE__ и __FUNCTION__ (__func__ в c99) в сочетании с именем потока, если вы являетесь отправкой сообщений.

Это мой (черный ящик) предложения!

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