...
Code Block | ||
---|---|---|
| ||
bool flag = false; void test() { while (!flag) { sleep(1000); } } void wakeup(){ flag = true; } void debit(unsigned int amount){ test(); account_balance -= amount; } |
...
Code Block | ||
---|---|---|
| ||
volatile bool flag = false;
void test() {
while (!flag){
sleep(1000);
}
}
void wakeup(){
flag = true;
}
void debit(unsigned int amount) {
test();
account_balance -= amount;
}
|
...
Code Block | ||
---|---|---|
| ||
#include <pthread.h>
int account_balance;
pthread_mutex_t flag = PTHREAD_MUTEX_INITIALIZER;
void debit(unsigned int amount) {
pthread_mutex_lock(&flag);
account_balance -= amount; /* Inside critical section */
pthread_mutex_unlock(&flag);
}
|
...