#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#define BUFFER_SIZE 10
int main(int argc, char** argv) {
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
int buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
MPI_Status status;
srand(rank
); // Inițializăm generatorul de numere aleatoare cu rank-ul procesului
if (rank == 0) {
// Producător
for (;;) {
MPI_Send(&item, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
printf("Producer produced item %d\n", item
); if (item == -1) break;
}
} else if (rank == 1) {
// Consumator
while (1) {
int item;
MPI_Recv(&item, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
printf("Consumer consumed item %d\n", item
); if (item == -1) break;
}
}
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1waS5oPgoKI2RlZmluZSBCVUZGRVJfU0laRSAxMAoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgICBpbnQgcmFuaywgc2l6ZTsKICAgIE1QSV9Jbml0KCZhcmdjLCAmYXJndik7CiAgICBNUElfQ29tbV9yYW5rKE1QSV9DT01NX1dPUkxELCAmcmFuayk7CiAgICBNUElfQ29tbV9zaXplKE1QSV9DT01NX1dPUkxELCAmc2l6ZSk7CgogICAgaW50IGJ1ZmZlcltCVUZGRVJfU0laRV07CiAgICBpbnQgaW4gPSAwOwogICAgaW50IG91dCA9IDA7CiAgICBNUElfU3RhdHVzIHN0YXR1czsKCiAgICBzcmFuZChyYW5rKTsgLy8gSW5pyJtpYWxpesSDbSBnZW5lcmF0b3J1bCBkZSBudW1lcmUgYWxlYXRvYXJlIGN1IHJhbmstdWwgcHJvY2VzdWx1aQoKICAgIGlmIChyYW5rID09IDApIHsKICAgICAgICAvLyBQcm9kdWPEg3RvcgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaW50IGl0ZW0gPSByYW5kKCkgJSAxMDA7CiAgICAgICAgICAgIE1QSV9TZW5kKCZpdGVtLCAxLCBNUElfSU5ULCAxLCAwLCBNUElfQ09NTV9XT1JMRCk7CiAgICAgICAgICAgIHByaW50ZigiUHJvZHVjZXIgcHJvZHVjZWQgaXRlbSAlZFxuIiwgaXRlbSk7CiAgICAgICAgICAgIGlmIChpdGVtID09IC0xKSBicmVhazsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKHJhbmsgPT0gMSkgewogICAgICAgIC8vIENvbnN1bWF0b3IKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpbnQgaXRlbTsKICAgICAgICAgICAgTVBJX1JlY3YoJml0ZW0sIDEsIE1QSV9JTlQsIDAsIDAsIE1QSV9DT01NX1dPUkxELCAmc3RhdHVzKTsKICAgICAgICAgICAgcHJpbnRmKCJDb25zdW1lciBjb25zdW1lZCBpdGVtICVkXG4iLCBpdGVtKTsKICAgICAgICAgICAgaWYgKGl0ZW0gPT0gLTEpIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBNUElfRmluYWxpemUoKTsKICAgIHJldHVybiAwOwp9