Linux多线程(第三次作业)

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;  
}

你可能感兴趣的:(Linux,多线程,thread,操作系统,并发编程,linux)