ПВМ с вилкой ()

В настоящее время я пытаюсь подать заявку. Я пишу код на 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)). В чем может быть проблема? Главный процесс продолжает ожидать входящие сообщения, но никогда не получает их.

Спасибо за помощь! С уважением, Реми

0 ответов

Другие вопросы по тегам