ПВМ с вилкой ()
В настоящее время я пытаюсь подать заявку. Я пишу код на C и использую библиотеку PVM. Я постараюсь сократить то, что приложение должно делать:
Мастер процесс порождает, например. 5 подчиненных процессов, которые общаются между собой и хозяином. Подчиненный процесс должен выполнять два параллельных действия: выполнять собственные процедуры и, во-вторых, быть слушателем сообщений, поступающих от других ведомых устройств.
Вот небольшая часть кода, которая работает случайным образом:
int main()
{
init();
if(fork() == 0)
{
while(1)
{
//perform listener actions
}
}
else
{
while(1)
{
//perform some procedures
}
}
}
Когда я помещаю некоторые действия SEND_MESSAGE в MASTER-процесс внутри обоих циклов while, это очень странно для меня. Например, без этих циклов while, если я отправлю 5 сообщений из обоих этих whiles (вместе 10:-)), главный процесс получит, например,. 5 из первого цикла и 1 сообщение из второго. Если мы ожидаем (NULL) в родительском процессе, он выполняется хорошо (конечно, тогда нет цикла while(1)). В чем может быть проблема? Главный процесс продолжает ожидать входящие сообщения, но никогда не получает их.
Спасибо за помощь! С уважением, Реми