#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<stdint.h>
 
int globalVariable = 5;
 
void *threadFunct(void *arg) {
    int localVariable = (int)(intptr_t)arg;
    printf("[Thread] global: %d local: %d\n", globalVariable, localVariable);
    
    globalVariable++;
    localVariable++;
 
    printf("[Thread] global: %d local: %d\n", globalVariable, localVariable);
    pthread_exit(NULL);
}
 
int main() {
    int localVariable = 3;
 
    printf("[Main] global: %d local: %d\n", globalVariable, localVariable);
 
    pthread_t thread;
    printf("[Main] Create thread\n");
    pthread_create(&thread, NULL, &threadFunct, (void *)(intptr_t)localVariable);
 
    pthread_join(thread, NULL);
 
    printf("[Main] global: %d local: %d\n", globalVariable, localVariable);
 
    return 0;
 
}