1、解释程序中加粗句子的功能
#include
#include
static pthread_mutex_t testlock;
pthread_t test_thread;
void *test() {
pthread_mutex_lock(&testlock);
//阻塞式对互斥量testlock加锁,主线程执行第一次lock之后、unlock之前,此线程test阻塞,直到主线程unlock之后才能执行,以保护共享资源
printf(“thread Test() \n”);
pthread_mutex_unlock(&testlock);
//解锁互斥量testlock
}
int main()
{
pthread_mutex_init(&testlock, NULL);
//初始化互斥量testlock,创建互斥量名为testlock,互斥量属性为默认属性
pthread_mutex_lock(&testlock);
printf(“Main lock \n”);
pthread_create(&test_thread, NULL, test, NULL);
//创建线程,ID为test_thread,线程属性为默认属性,起始地址为线程函数test,无参数传递给线程函数
sleep(1);
printf(“Main unlock \n”);
pthread_mutex_unlock(&testlock);
sleep(1);
pthread_join(test_thread,NULL);
//阻塞等待test_thread线程结束,结束时被等待线程test_thread资源被释放,被等待线程没有返回值
pthread_mutex_destroy(&testlock);
return 0;
}
2、使用C语言编程完成以下功能,编译并执行。(学号为单号做第一个,学号为双号做第二个)
(害,瞎写的!)
1)用pthread_create创建一个线程并计算0~20之间被4除余数为2的数并显示,主线程显示你的名字+学号。
#include
#include
#include
#include
void thread(void)
{
int i;
for (i=0;i<20;i++)
if(i%4==2)
printf("%d\n",i);
}
int main(void)
{
pthread_t id;
int ret;
ret=pthread_create(&id,NULL,(void *)thread,NULL);
if(ret!=0){
printf("error!\n");
exit(1);
}
printf("姓名+学号\n");
pthread_join(id,NULL);
return 0;
}
2)用pthread_create创建一个线程并显示你的名字+学号,主线程计算0~30之间被5除整除的数之和并显示。
#include
#include
#include
#include
void thread(void)
{
printf("姓名+学号\n");
}
int main(void)
{
pthread_t id;
int i,ret;
int sum=0;
ret=pthread_create(&id,NULL,(void *)thread,NULL);
if(ret!=0){
printf("error!\n");
exit(1);
}
for (i=1; i<=30; i++)
if ( i%5==0 ){
sum+=i;
}
printf("%d\n",sum);
pthread_join(id,NULL);
return 0;
}