Linux多线程消息机制是一种用于在线程之间传递信息的同步机制。它允许线程之间通过消息队列进行通信,从而实现数据的共享和线程间的协作。
以下是一个使用POSIX消息队列的简单示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mqueue.h>
#include <pthread.h>
#define QUEUE_NAME "/my_queue"
#define MAX_MSG_SIZE 100
void* sender_thread(void* arg) {
mqd_t mq;
struct mq_attr attr;
char buffer[MAX_MSG_SIZE];
attr.mq_flags = 0;
attr.mq_maxmsg = 10;
attr.mq_msgsize = MAX_MSG_SIZE;
attr.mq_curmsgs = 0;
mq = mq_open(QUEUE_NAME, O_CREAT | O_WRONLY, 0644, &attr);
if (mq == (mqd_t)-1) {
perror("mq_open");
exit(1);
}
strcpy(buffer, "Hello, World!");
if (mq_send(mq, buffer, strlen(buffer) + 1, 0) == -1) {
perror("mq_send");
exit(1);
}
mq_close(mq);
return NULL;
}
void* receiver_thread(void* arg) {
mqd_t mq;
char buffer[MAX_MSG_SIZE];
mq = mq_open(QUEUE_NAME, O_RDONLY);
if (mq == (mqd_t)-1) {
perror("mq_open");
exit(1);
}
if (mq_receive(mq, buffer, MAX_MSG_SIZE, NULL) == -1) {
perror("mq_receive");
exit(1);
}
printf("Received message: %s\n", buffer);
mq_close(mq);
mq_unlink(QUEUE_NAME);
return NULL;
}
int main() {
pthread_t sender, receiver;
pthread_create(&sender, NULL, sender_thread, NULL);
pthread_create(&receiver, NULL, receiver_thread, NULL);
pthread_join(sender, NULL);
pthread_join(receiver, NULL);
return 0;
}
mq_close
和mq_unlink
。通过以上方法,可以有效管理和优化Linux多线程消息机制的使用。
领取专属 10元无门槛券
手把手带您无忧上云