Untitled
unknown
plain_text
2 years ago
1.8 kB
11
Indexable
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
int num1, num2, result;
pthread_mutex_t mutex;
void *thread1(void *arg) {
printf("Thread 1: Enter two numbers: ");
scanf("%d %d", &num1, &num2);
pthread_exit(NULL);
}
void *thread2(void *arg) {
int choice;
printf("Thread 2: Press 1 for multiplication or 2 for division: ");
scanf("%d", &choice);
pthread_mutex_lock(&mutex);
if (choice == 1) {
result = num1 * num2;
} else if (choice == 2 && num2 != 0) {
result = num1 / num2;
} else {
printf("Invalid choice or division by zero!\n");
exit(EXIT_FAILURE);
}
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
void *thread3(void *arg) {
pthread_mutex_lock(&mutex);
printf("Thread 3: Result is %d\n", result);
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
int main() {
pthread_t tid1, tid2, tid3;
int ret;
// Initialize the mutex
pthread_mutex_init(&mutex, NULL);
// Create Thread 1
ret = pthread_create(&tid1, NULL, thread1, NULL);
if (ret) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
// Create Thread 2
ret = pthread_create(&tid2, NULL, thread2, NULL);
if (ret) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
// Create Thread 3
ret = pthread_create(&tid3, NULL, thread3, NULL);
if (ret) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
// Wait for all threads to finish
pthread_join(tid1, NULL);
pthread_join(tid2, NULL);
pthread_join(tid3, NULL);
printf("Operations have been done! Congrats\n");
// Destroy the mutex
pthread_mutex_destroy(&mutex);
return 0;
}
Editor is loading...
Leave a Comment