#include <u.h>
#include <libc.h>
enum {
N = 1 * 1000*1000,
};
long sem1;
uchar buffer[128];
long sem2;
uchar buffer2[128];
void
thread1(void)
{
int i;
for(i = 0; i < N; i++){
semacquire(&sem1, 1);
semrelease(&sem2, 1);
}
wait();
exits("");
}
void
thread2(void)
{
int i;
for(i = 0; i < N; i++){
semrelease(&sem1, 1);
semacquire(&sem2, 1);
}
exits("");
}
void
main(void)
{
switch(rfork(RFPROC|RFMEM)){
case -1:
sysfatal("fork: %r");
case 0:
thread2();
default:
thread1();
}
}
|