使用pthread_create()函数创建两个线程,一个线程的while()循环用于刷新屏幕的内容。一个线程用于getch()函数。当getch()函数接受键盘输入后,使用pthread_exit()退出它所在的函数的线程,并使用pthread_cancel()函数将那个有while()循环的函数的线程关闭 //-lpthread
//例程:
#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
pthread_t ntid;
void *thr_fn(void *arg){
printf("Hello!\n");
return ((void *)0);
}
int err;
err=pthread_create(&ntid,NULL,thr_fn,NULL);
/
创建两个线程:
void main()
{
pthread_t tid1,tid2;
pthread_create(&tid1,NULL,(void *)juzhen1,NULL);
pthread_create(&tid2,NULL,(void *)juzhen2,NULL);
}
void *thread_A_function(void *arg1);//Linux下的线程1
void *thread_B_function(void *arg2);//Linux下的线程2
char message1[]="I am now in the process!"
int main()
{
int RetVal1,RetVal2;//保存子线程a和b的返回值
pthread_t a_thread;//子线程1
pthread_t b_thread;//子线程2
void *threadA_result;
void *threadB_result;
//开始创建两个线程
RetVall=pthread_create(&a_thread,NULL,thread_A_function,(void *)message1);//
sleep(1);
RetVall=pthread_create(&b_thread,NULL,thread_B_function,(void *)message1);
if(RetVal1!=0)
{
perror("ThreadA creation failed!");
exit(EXIT_FAILURE);
}
if(RetVal2!=0)
{
perror("ThreadB creation failed!");
exit(EXIT_FAILURE);
}
printf("I am now in the process,waiting the thread finish....\n");
RetVall=pthread_join(a_thread,&threadA_result);//等待线程a结束
if(RetVal1!=0)
{
perror("Thread join failed!");
exit(EXIT_FAILURE);
}
printf(ThreadA joined,the threadA return %s\n",(char *)threadA_result);
printf(Message is now %s\n",message1);
RetVal2=pthread_join(b_thread,&threadB_result);//等待线程b结束
if(RetVal2!=0)
{
perror("Thread join failed!");
exit(EXIT_FAILURE);
}
printf(ThreadB joined,the threadB return %s\n",(char *)threadB_result);
printf("Message is now %s\n",message1);
exit(EXIT_SUCCESS);
}
void *thread_A_function(void *arg1)
{
strcpy(message,"I has changed by threadA");
printf("thread_functionA is running.Argument was %s\n",(char *)arg1);
sleep(3);
pthred_exit("THREAD_001);
}
void *thread_B_function(void *arg2)
{
strcpy(message1,"I has changed by threadB");
printf("thread_functionB is running.Argument was %s\n",(char *)arg2);
sleep(4);
pthread_exit("THREAD_002");
}
///
Qt按键事件:
在网址:http://blog.163.com/happyboyyu@yeah/blog/static/107334462201031852722111/
有详细的说明