Уважаемый anonymous 05.10.2004 ответил по поводу программы которая нормально работает в RH7.2, но не работает в RH9.0, что в принципе лечится #export LD_ASSUME_KERNEL=2.4.2 хотелось выяснить почему и пример работает везде и после имплантации в Ваш пример таймера стало ясно - из-за таймера.
Может у кого есть идеи?
Ваш пример работаюший:
Не знаю, как и что, но вот такая-то программа работает и с ntpl.
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
+++ #include <unistd.h> для sleep (без этого у меня не компилится)
static sem_t sem_a;
static sem_t sem_b;
static pthread_t thread_id1;
void *thread_1(void *data)
{ printf ("Wait for sem_b\n"); fflush (stdout);
sem_wait(&sem_b);
printf ("Thread exit\n"); fflush (stdout); }
int main () {
sem_init(&sem_a,0,0);
sem_init(&sem_b,0,0);
pthread_create(&thread_id1,NULL,thread_1,NULL);
sleep (10);
sem_post (&sem_b);
printf ("Wait for sem_a\n"); fflush (stdout);
sem_wait(&sem_a);
return 0;
}
Вот мой не работающий(в RH9.0(NTPL)) пример:
(Должен висеть мертво как и первый, но вываливаеся на return)
#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; //tn_tp
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;
}
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Переход от LinuxThreads к NTPL (2004)
- Форум Posix Threads (2005)
- Форум Реализовать последовательно-параллельный запуск потоков (2017)
- Форум Завершение потока: остается занятая память. (2009)
- Форум Странное поведение thread (2003)
- Форум Структура epoll сервера (2010)
- Форум IPC не компилируется (2006)
- Форум Как в функции-методе внутри класса передать в качестве параметра адрес функции-метода этого же класса? (2004)
- Форум снова нити (2007)
- Форум pthread (2006)