Files
SpeedScope/sample/programs/cpp/forks.cpp
2018-08-16 10:24:12 -07:00

82 lines
943 B
C++

#include <cstdlib>
#include <unistd.h>
using namespace std;
void alpha()
{
int z = 3;
for (int i = 0; i < 100000; i++)
{
z *= 3;
}
}
void beta()
{
int z = 3;
for (int i = 0; i < 100000; i++)
{
z *= 3;
}
}
void delta()
{
int z = 3;
for (int i = 0; i < 100000; i++)
{
z *= 3;
}
alpha();
beta();
}
void gamma()
{
int z = 3;
for (int i = 0; i < 100000; i++)
{
z *= 3;
}
}
int main(int argc, char *argv[])
{
pid_t pid1 = fork();
if (pid1 == 0)
{
// Child process 1
for (int i = 0; i < 100; i++)
{
alpha();
beta();
}
}
else
{
pid_t pid2 = fork();
if (pid2 == 0)
{
// Child process 2
for (int i = 0; i < 100; i++)
{
alpha();
beta();
}
}
else
{
for (int i = 0; i < 100; i++)
{
alpha();
beta();
gamma();
delta();
}
}
}
return 0;
}