2016英特尔在线笔试题(C语言)
#include<stdio.h> #include<string.h> #include <pthread.h> void* print1(void* data){ printf("1 "); } void* print2(void* data){ printf("2 "); } void* print3(void* data){ printf("3 "); } int main(void){ pthread_t t,t1,t2; pthread_create(&t,0,print1,NULL); pthread_create(&t1,0,print2,NULL); pthread_create(&t2,0,print3,NULL); pthread_join(t,NULL); pthread_join(t1,NULL); pthread_join(t2,NULL); printf("\n"); }
上面程序的输出是什么( )
A. 1 2 3
B. 1 3 2
C. 3 2 1
D. 不确定
答案D 解析:
pthread_create 是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。
头文件:1
|
#include<pthread.h> |
1
2
|
int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, ( void *)(*start_rtn)( void *), void *arg); |
pthread_join 用来等待一个线程的结束。
头文件 : #include <pthread.h>
头文件 : #include <pthread.h>
函数定义: int pthread_join(pthread_t thread, void **retval);
描述 :pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。并且thread指定的线程必须是joinable的。
参数 :thread: 线程标识符,即线程ID,标识唯一线程。retval: 用户定义的指针,用来存储被等待线程的返回值。
返回值 : 0代表成功。 失败,返回的则是错误号。