-1
pthreadを使用して送受信機能をシミュレートしようとしています。私は次のコードを実装しました。しかし、何度か、それが掛かったり、間違った結果が出たりします。pthreadsを使用して送受信をシミュレートします
int g_sender,g_receiver; //global variables to keep track of the sender and receiver
void send(double ** data,int sender,int receiver, int size[],int block_size){
int i;
pthread_mutex_lock(&lock);
for (i=0;i<size[0];i++)
memcpy(sharedA[i],data[i],size[1]*block_size);
g_sender = sender;
g_receiver = receiver;
sem_wait(&sem);
pthread_mutex_unlock(&lock);
}
void receive(double ** data, int sender,int receiver, int size[],int block_size){
int i;
while(!(sender==g_sender && receiver==g_receiver));
for(i=0;i<size[0];i++)
memcpy(data[i],sharedA[i],size[1]*block_size);
g_sender =-1;
g_receiver = -1;
sem_post(&sem);
}
私はここでミスしたと思いますか?
おかげ
グローバル変数sharedA、g_sender、g_receiverを他のスレッドから保護するためにロックを使用しています。私はブロッキング送信をシミュレートするためにセマフォを使用します。 – user504453
@ user504453、いずれにしてもあなたのデザインは私にはあまり意味がありません –