文章目录
知识补充
-
pthread_create(&thread_handles[thread],NULL,compute_pi,(void*)thread);
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。(一般为NULL)
第三个参数是线程运行函数的起始地址。
最后一个参数是指针,指向运行函数的参数。 -
pthread_join (pthread_t__th, void **__thread_return);
第一个参数为被等待的线程标识符,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。
第二个参数唯一的参数是函数的返回代码,为一个用户定义的指针,它可以用来存储被等待线程的返回值,只要pthread_exit中的参数retval不是NULL,这个值将被传递给 thread_return。
代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。 -
a == &*a 都是该存储单元的地址。
&a表示a对应的存储单元的地址。
*a表示:首先,要求a对应的存储单元中的数据一定是另一个存储单元的地址。
于是,*a表示以a值为地址的存储单元的数据。
则&*a表示以a值为地址的存储单元的数据取该数据的地址,可知还是为a。 -
rand()函数的取值范围在0~RAND_MAX之间(C语言)
linux下的RAND_MAX值为2147483647(二进制32位)
windows下的RAND_MAX值为32767(二进制16位)