История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Заведи функцию со статик переменной. Ну типа вот образно.
enum sg
{
SET,
GET,
}
int mylib_setget_signal(enum sg,int signal, void * sender, void * current)
{
static int local = NO_SIGNAL;
switch(sg)
{
case SET: local = signal; return local;
case GET: if(sender == current){ return NO_SIGNAL;} return local;
}
return ERROR;
}
Пусть в главном потоке получаются и обрабатываются сигналы и делают SET. Пусть все остальные потоки при работе постоянно делают GET проверяя текущий статус «сигнала». На всякий случай «броадкаста» при установке значения сигнала ещё указывается указатель на что-то специфичное потоку и если отправитель == приёмник то игнорируем, что-бы не слать «сигналы» самому себе.
Исходная версия LINUX-ORG-RU, :
Заведи функцию со статик переменной. Ну типа вот образно.
enum sg
{
SET,
GET,
}
int mylib_setget_signal(enum sg,int signal, void * sender, void * current)
{
if(sender == current) return NO_SIGNAL;
static int local = NO_SIGNAL;
switch(sg)
{
case SET: local = signal; return local;
case GET: return local;
}
return ERROR;
}
Пусть в главном потоке получаются и обрабатываются сигналы и делают SET. Пусть все остальные потоки при работе постоянно делают GET проверяя текущий статус «сигнала». На всякий случай «броадкаста» при установке значения сигнала ещё указывается указатель на что-то специфичное потоку и если отправитель == приёмник то игнорируем, что-бы не слать «сигналы» самому себе.