我试图将使用fork()的代码转换为线程。因为我需要变量值来改变。
使用fork()的代码:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int value = 5;
int main(){
pid_t pid;
pid = fork();
if(pid == 0){ //child process
printf("Entrei no filho! \n");
value += 15;
return 0;
}
else if(pid > 0){ //parent process
wait(NULL);
printf("PARENT: value = %d\n", value);
return 0;
}}
最终值为5
我的尝试:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[]){
pthread_t thread1, thread2;
char *msg1 = "First thread";
char *msg2 = "Second thread";
int value = 5;
pthread_create(thread1, NULL, if1, (void *) msg1);
pthread_create(thread2, NULL, if2, (void *) msg2);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
void *if1(){
value += 15;
return NULL;
}
void *if2(){
printf("Final value: %d",value);
return NULL;
}
最终值必须是20使用线程