2015-08-25 3 views
1
int main() 
{ 
    while(1) 
    { 
     // some code 
    } 
    while(1) 
    { 
     // some code 
    } 
} 

Как запустить два цикла одновременно? Как параллельное программирование реализовано для этого в Windows? Я использую компилятор mingw.Выполнение двух одновременных циклов

+0

Если вы хотите запустить их параллельно, вам нужно будет поместить их в разные потоки. –

+3

какой версия? 'c11' включает в себя высокоуровневый потоковый заголовок' threads.h'. – HuStmpHrrr

+0

@HuStmpHrrr API-интерфейс потока C11 недоступен в большинстве операционных систем, а компилятор Windows C не поддерживает даже C11. Я бы посоветовал не использовать его из-за плохой поддержки. – fuz

ответ

-1

Вы можете использовать системный вызов fork(). Он будет создавать два процесса, оба могут иметь две отдельные while() петли.

int main() 
{ 
    if(fork()) { 
     while(1) { 
      /* some code */ 
     } 
    } else { 
     while(1) { 
      /* some code */ 
     } 
    } 
} 

Более подробную информацию о fork() можно найти на странице man в Unix. Cygwin имеет полнофункциональную fork() в Windows.

+1

Я упомянул, что для окон, я думаю, fork() не может использоваться в окнах, есть ли способ реализовать winapi? – rafih

+0

, когда вы вызываете fork(), всегда проверяйте возвращаемое значение pid_t. есть три возможности. 1) fork() не удалось 2) родительский процесс 3) дочерний процесс. Этот ответ не обрабатывает неудавшийся случай. – user3629249

+0

Я думал, что он хочет, чтобы 2 блока запускались одновременно? Разве это не будет работать только один или другой в зависимости от отказа вилки? – Carcigenicate