タイマー スレッドを作成し、タイマーに達するとそのスレッドをtimeout
キャンセルできます。mutex.code は次のようにする必要はありません。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define TIMEOUT 1*60 //in secend
int count = 0;
pthread_t t_main; //Thread id for main thread
void * timer_thread()
{
while (TIMEOUT > count)
{
sleep(1); //sleep for a secand
count++;
}
printf("killinn main thread\n");
pthread_cancel(t_main); // cancel main thread
}
void * m_thread()
{
pthread_t t_timer; //Thread id for timer thread
if (-1 == pthread_create(&t_timer, NULL, timer_thread, NULL))
{
perror("pthread_create");
return NULL;
}
//DO your work...
while(1)
{
sleep(2);
}
}
int main()
{
if ( -1 == pthread_create(&t_main, NULL, m_thread, NULL))
{
perror("pthread_create");
return -1;
}
if (-1 == pthread_join(t_main, NULL))
{
perror("pthread_join");
return -1;
}
return 0;
}