Linux中多線程程式設計并傳遞多個參數執行個體是本文講解的内容,不多說,先來看内容。今天上午實驗了Linux下的多線程程式設計,并将多個參數傳遞給線程要執行的函數。在Linux環境下編譯通過後,還将它移到了Android的模拟器中。
以下是實驗程式的源代碼:
pthread.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
struct argument
{
int num;
char string[30];
};
int main()
{
int i,ret;
void *thread1_func(void *);
void *thread2_func(void *);
void *thread_return1,*thread_return2;
pthread_t thread1,thread2;
struct argument arg1,arg2;
arg1.num=1949;
strcpy(arg1.string,"中華人民共和國成立");
arg2.num=2009;
strcpy(arg2.string,"建國六十周年");
pthread_create(&thread1,NULL,thread1_func,(void *)&arg1);
pthread_create(&thread2,NULL,thread2_func,(void *)&arg2);
for(i=0;i<=2;i++)
{
printf("我是最初的程序!\n");
sleep(2);
}
ret=pthread_join(thread1,&thread_return1);
if(ret!=0)
printf("調用pthread_join擷取線程1傳回值出現錯誤!\n");
else
printf("pthread_join調用成功!線程1退出後帶回的值是%d\n",(int)thread_return1);
ret=pthread_join(thread2,&thread_return2);
if(ret!=0)
printf("調用pthread_join擷取線程2傳回值出現錯誤!\n");
else
printf("pthread_join調用成功!線程2退出後帶回的值是%d\n",(int)thread_return2);
return 0; } void *thread1_func(void *arg)
{
int i;
struct argument *arg_thread1;
arg_thread1=(struct argument *)arg;
for(i=0;i<=3;i++)
{
printf("我來自線程1,傳遞給我的參數是%d,%s。\n",(*arg_thread1)。num,(*arg_thread1)。string);
sleep(2);
}
return (void *)123; }
void *thread2_func(void *arg)
{
int i;
struct argument arg_thread2;
arg_thread2=*(struct argument *)arg;
for(i=0;i<=3;i++)
{
printf("我來自線程2,傳遞給我的參數是%d,%s。\n",arg_thread2.num,arg_thread2.string);
sleep(2);
}
return (void *)456;
} 以上是 pthread.c 的内容