参照博文:
http://blog.csdn.net/lxmky/article/details/7669296
写的不错,
#include <sys/time.h>
#include <sys/select.h>
#include <time.h>
#include <stdio.h>
#include <stdbool.h>
#include <pthread.h>
typedef struct _StrParam
{
bool flag;
int data;
}SP,*PSP;
/*seconds: the seconds; mseconds: the micro seconds*/
void setTimer(int seconds, int mseconds)
{
struct timeval temp;
temp.tv_sec = seconds;
temp.tv_usec = mseconds;
select(0, NULL, NULL, NULL, &temp);
printf("timer\n");
return ;
}
void *thread(void* arg)
{
printf("this is thread process %d\n", (*(PSP)arg).data);
while((*(PSP)arg).flag)
{
setTimer(2, 100);
}
return arg;
}
int main()
{
//printf("this a main process \n");
pthread_t m_thread;
int a = 100;
SP s1;
s1.data = 100000;
s1.flag = true;
int ret;
int*thread_ret = NULL;
ret = pthread_create(&m_thread,NULL,thread,&s1);//(线程函数多为静态,或全局函数)? .. 第四个参数就是线程传入的参数
pthread_join(m_thread, (void**)&thread_ret);
printf( "thread_ret = %d.\n", *thread_ret);
return 0;
}