Так что я вхожу в параллельное программирование, но по какой-то причине я даже не могу заставить работать основы. У меня есть файл с именем fork.c, который содержит метод main. В этом методе main я разветвляюсь дважды, на дочерние процессы 1 и 2.
У ребенка 1 я печатаю символ «А» 50 раз.
У ребенка 2 я печатаю символ «B» 50 раз.
Когда я запускаю свой код, я получаю вывод AAAAA ... AAAABBBBBB .... BBBBBB. Но никогда не похоже на ABABABABABABAB .... На самом деле, иногда я даже получаю BBBBB .... BBBBAAAA .... AAAAA.
Так почему я испытываю это поведение? Возможно, я поступаю по этому поводу совершенно неправильно.
#include <stdlib.h>
#include <stdio.h>
void my_char(char n) {
write(1, &n, 1);
}
int main() {
int status;
pid_t child1, child2;
if (!(child1 = fork())) {
// first childi
int a;
for (a = 0; a < 50; a++) {
my_char('A');
}
exit(0);
} else if (!(child2 = fork())) {
// second child
int a;
for (a = 0; a < 50; a++) {
my_char('B');
}
exit(0);
} else {
// parent
wait(&child1);
wait(&child2);
my_char('\n');
}
return 0;
}