#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
pthread_t tid[2];
int counter;
pthread_mutex_t lock;
void* trythis(void* arg)
{
pthread_mutex_lock(&lock);
unsigned long i = 0;
counter += 1;
printf("\n Job %d has started\n", counter);
for (i = 0; i < (0xFFFFFFFF); i++)
; printf("\n
Job %d has finished\n", counter);
pthread_mutex_unlock(&lock);
return NULL;
}
int main(void)
{
int i = 0;
int error;
if (pthread_mutex_init(&lock, NULL) != 0) {
printf("\n mutex init has failed\n");
return 1;
}
while (i < 2) {
error = pthread_create(&(tid), NULL,
&trythis, NULL);
if (error != 0)
printf("\nThread can't be created :[%s]",
strerror(error));
i++;
}
pthread_join(tid[0], NULL);
pthread_join(tid[1], NULL);
pthread_mutex_destroy(&lock);
return 0;
}
Base on the given code above, write a program that keeps
track of balance in a bank account. The balance initially is set to
1000. The program should define two methods deposit() and
withdraw(). The deposit() method adds 500 to the balance while the
withdraw() deducts 100 from the balance. In the main method of the
program create 3 threads so that two threads will call the withdraw
method and the third thread will call the deposit() method. Your
implementation should ensure that balance will always have the
correct value.
#include #include #include #include #include pthread_t tid[2]; in
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am