#include <stdio.h>
#include <direct.h>
#define COUNTER_FILE "counter.txt"
#define SEMAPHORE_FILE "semaphore.txt"
void enter_critical_section(void)
{
while (mkdir(SEMAPHORE_FILE) == -1)
;
}
void leave_critical_section(void)
{
rmdir(SEMAPHORE_FILE);
}
void simulate_counter(void)
{
FILE *file;
int counter;
enter_critical_section();
file = fopen(COUNTER_FILE, "r");
if (file) {
fscanf(file, "%d", &counter);
fclose(file);
} else
counter = 0;
++counter;
file = fopen(COUNTER_FILE, "w");
if (file) {
fprintf(file, "%d", counter);
fclose(file);
}
leave_critical_section();
printf("Counter = %d\n", counter);
}
int main()
{
int i;
for (i = 0; i < 1000; ++i)
simulate_counter();
return 0;
}
Синхронизация процессов с использованием активного ожидания
Код:
Необходимо составить такую же программу, только на любом другом языке программирования. Буду благодарен за помощь