Я пытаюсь использовать pthread.В моем коде ниже я определил две глобальные переменные (arg1 и arg2), а в основной функции я начинаю заполнять каждый элемент arg2 с 1. Я хочу, чтобы pthread напечатал 101-й элемент arg2, как только он будет заполненглавный.Но pthread ничего не печатает.На самом деле за изменениями arg1 не следует pthread, и pthread предполагает, что arg1 равен 0. Как я могу активировать pthread, чтобы при записи в буфер main, pthread начинал чтение из буфера одновременно?
Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <math.h>
#include <sys/time.h>
#include <unistd.h>
#include <assert.h>
#include <signal.h>
#include <pthread.h>
struct arg_struct {
int arg1;
int arg2[1000];
};
//volatile int arg1;
//int arg2[1000];
void *ProcessThread (void *arguments){
struct arg_struct *args = arguments;
if( args -> arg1==100) {
printf("%d", args -> arg2[ args -> arg1]);
}
pthread_exit(NULL);
return NULL;
}
void main(){
struct arg_struct args;
pthread_t thread1;
void *thread_status;
pthread_create(&thread1, NULL, ProcessThread, (void *)&args);
for ( args.arg1=0; args.arg1<1000; args.arg1++){
args.arg2[args.arg1] =1;
}
pthread_join(thread1,&thread_status);
}