關於進程動態池的問題。我需要保留自由進程的信息。如果免費進程的數量少於N
,我應該創建新的進程。但是,我知道free
變量在每個過程中都是相同的。如何使free
變量爲「全局」,並且在子進程中進行更改將會在父進程中更改變量,然後父進程可以檢查該進程並讓更多子進程進行更改?像共享內存和其他IPC一樣。一點困惑與他們。父進程和子進程的全局變量
free=5;
for (i=0;i<5;i++) // create 5 pre-forks
{
pid=fork();
if (pid==0) //child
{
break;
}
else//parent
{
}
}
while (1)
{
if (pid==0) // child
{
newsock = accept(listensock, NULL,NULL);
free--; //children is busy
send(newsock, buffer, nread, 0);
close(newsock);
free++;
}
else if (pid>0) // parent
{
if ...// if less than n fork() more
}
}
你回答了你自己的問題。你可以使用共享內存。在網上查找有關共享內存的文檔。如果你想在正在運行的實體之間共享地址空間,請使用線程。如果你使用線程,如果你使用互斥量,他們可以安全地共享共享內存。 – bspikol 2013-05-01 12:45:20