Логика следующая -
стартуется поток, который ожидает семафор b;
таймер постит семафор b и поток завершен;
процесс ожидает семафор а.
Как правильно переписать приложение(RH9.0):
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/time.h>
sem_t sem_a;
sem_t sem_b;
void post(void)
{
sem_post (&sem_b);
};
struct itimerval timer;
struct sigaction sa;
void timer_handler (int signum)
{
post();
};
void *thread_1(void *data)
{
printf ("Wait for sem_b\n"); fflush (stdout);
sem_wait(&sem_b);
printf ("Thread exit\n"); fflush (stdout);
}
class tcl_07
{
pthread_t thread_id1;
public:
void start(void);
}cl_07;
void tcl_07::start(void)
{
sem_init(&sem_a,0,0);
sem_init(&sem_b,0,0);
pthread_create(&thread_id1,NULL,thread_1,NULL);
};
int main () {
cl_07.start();
sa.sa_handler=&timer_handler;
sigaction(SIGALRM,&sa,NULL);
timer.it_value.tv_sec=5;
timer.it_value.tv_usec=600000;
timer.it_interval.tv_sec=1;
timer.it_interval.tv_usec=00000;
setitimer(ITIMER_REAL,&timer,NULL);
printf ("Wait for sem_a\n"); fflush (stdout);
sem_wait(&sem_a);
return 0;
}
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Возвращаясь: Семафоры в Red Hat 9.0 (2004)
- Форум Таймеры в Си (2015)
- Форум потоки и сигналы. (2005)
- Форум Обработчик таймера для переключения контекста (2016)
- Форум POSIX таймеры (2011)
- Форум IPC не компилируется (2006)
- Форум Обработка сигналов в линуксе (2017)
- Форум Как узнать, сколько памяти доступно для выделения? (2005)
- Форум Реализовать последовательно-параллельный запуск потоков (2017)
- Форум sem_timedwait не хочет ждать (2005)