#include #include #include #include #include #include #include #include #include #define N 1000 #define M N/2 typedef int (*mat_t)[N]; typedef int (*mat_blk_t)[M]; struct sembuf pop, vop; #define P(s) semop(s,&pop,1); #define V(s) semop(s,&vop,1); double timespent ( struct timespec t1, struct timespec t2 ) { double t; t = 1000000000. * (double)(t2.tv_sec - t1.tv_sec); t += (double)(t2.tv_nsec - t1.tv_nsec); return t / 1000000000.; } mat_t createsharedmat ( int *shmid, int INIT ) { mat_t A; int i, j; *shmid = shmget(IPC_PRIVATE, N*N*sizeof(int), 0700|IPC_CREAT); A = (mat_t)shmat(*shmid,0,0); if (INIT) for (i=0; i