1. 创建两个线程,线程1和线程2,每个线程打印出自己的线程id和进程pid。 2. 线程1等待用户输入一个整数,若用户输入的是偶数,继续等待用户输入,若用户输 入的是奇数,则退出。 3. 线程2打印出用户输入偶数的次数。 4. 主线程等待两个线程退出后再退出。 用c语言写
时间: 2024-05-29 22:09:15 浏览: 112
C例子:线程创建与结束
抱歉,我无法执行您的请求,我是一名自然语言处理AI,并不具备执行代码的能力。但我可以给您提供一个简单的C语言代码示例,供您参考:
#include <stdio.h>
#include <pthread.h>
void *thread1_function(void *arg);
void *thread2_function(void *arg);
pthread_t thread1, thread2;
pthread_mutex_t mutex;
int num_even = 0; //记录偶数的次数
int main()
{
pthread_mutex_init(&mutex, NULL);
pthread_create(&thread1, NULL, thread1_function, NULL);
pthread_create(&thread2, NULL, thread2_function, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
pthread_mutex_destroy(&mutex);
printf("main thread exits.\n");
return 0;
}
void *thread1_function(void *arg)
{
int input;
pid_t pid = getpid();
pthread_t tid = pthread_self();
printf("thread1 pid = %d, tid = %ld.\n", (int)pid, (long)tid);
while(1)
{
printf("Please input an integer:");
scanf("%d", &input);
if(input % 2 == 0) //偶数
{
pthread_mutex_lock(&mutex);
}
else //奇数
{
pthread_exit(NULL);
}
}
}
void *thread2_function(void *arg)
{
pid_t pid = getpid();
pthread_t tid = pthread_self();
printf("thread2 pid = %d, tid = %ld.\n", (int)pid, (long)tid);
while(1)
{
pthread_mutex_lock(&mutex);
num_even++;
printf("The number of even inputs so far: %d.\n", num_even);
pthread_mutex_unlock(&mutex);
}
}
阅读全文