成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux多線程同步之消息隊(duì)列

運(yùn)維 系統(tǒng)運(yùn)維
msgget用于創(chuàng)建一個(gè)新隊(duì)列或打開(kāi)一個(gè)現(xiàn)存的隊(duì)列。msgsnd將新消息加入到消息隊(duì)列中;每個(gè)消息包括一個(gè)long型的type;和消息緩存;msgrcv用于從隊(duì)列中取出消息;取消息很智能,不一定先進(jìn)先出......

消息隊(duì)列是消息的鏈表,存放在內(nèi)核中并有消息隊(duì)列標(biāo)示符標(biāo)示。

msgget用于創(chuàng)建一個(gè)新隊(duì)列或打開(kāi)一個(gè)現(xiàn)存的隊(duì)列。msgsnd將新消息加入到消息隊(duì)列中;每個(gè)消息包括一個(gè)long型的type;和消息緩存;msgrcv用于從隊(duì)列中取出消息;取消息很智能,不一定先進(jìn)先出

①msgget,創(chuàng)建一個(gè)新隊(duì)列或打開(kāi)一個(gè)現(xiàn)有隊(duì)列

#include

int msgget ( key_t key, int flag );

//成功返回消息隊(duì)列ID;錯(cuò)誤返回-1

②msgsnd: 發(fā)送消息

#include

int msgsnd( int msgid, const void* ptr, size_t nbytes, int flag )

//成功返回0,錯(cuò)誤返回-1

a:   flag可以指定為IPC_NOWAIT;  若消息隊(duì)列已滿(mǎn),則msgsnd立即出錯(cuò)返回EABAIN;

若沒(méi)指定IPC_NOWAIT; msgsnd會(huì)阻塞,直到消息隊(duì)列有空間為止

③msgrcv: 讀取消息:

ssize_t msgrcv( int msgid, void* ptr, size_t nbytes, long type, int flag );

a. type == 0; 返回消息隊(duì)列中***個(gè)消息,先進(jìn)先出

b. type > 0    返回消息隊(duì)列中類(lèi)型為tpye的***個(gè)消息

c. type < 0    返回消息隊(duì)列中類(lèi)型 <=  |type| 的數(shù)據(jù);若這種消息有若干個(gè),則取類(lèi)型值最小的消息

消息隊(duì)列創(chuàng)建步驟:

#define   MSG_FILE "."

struct msgtype {

long mtype;

char buffer[BUFFER+1];

};

if((key=ftok(MSG_FILE,'a'))==-1)

{

fprintf(stderr,"Creat Key Error:%s\n", strerror(errno));

exit(1);

}

if((msgid=msgget(key, IPC_CREAT | 0666/*PERM*/))==-1)

{

fprintf(stderr,"Creat Message  Error:%s\n", strerror(errno));

exit(1);

}

msg.mtype = 1;

strncpy(msg.buffer, argv[1], BUFFER);

msgsnd(msgid, &msg, sizeof(struct msgtype), 0);

msgrcv(msgid, &msg, sizeof(struct msgtype), 1, 0);

示例代碼:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define   MSG_FILE "."

#define   BUFFER 255

#define   PERM S_IRUSR|S_IWUSR

#define IPCKEY 0x111

struct msgtype {

long mtype;

char buffer[BUFFER+1];

};

void* thr_test( void* arg ){

struct msgtype msg;

int msgid;

msgid =  *((int*)arg);

printf("msqid = %d  IPC_NOWAIT = %d\n", msgid, IPC_NOWAIT);

time_t tt = time(0)+8;

//while( time(0) <= tt )

//{

msgrcv(msgid, &msg, sizeof(struct msgtype), 1, 0);

fprintf(stderr,"Server Receive:%s\n", msg.buffer);

msg.mtype = 2;

msgsnd(msgid, &msg, sizeof(struct msgtype), 0);

//}

pthread_exit( (void*)2 );

}

int main(int argc, char **argv)

{

struct msgtype msg;

key_t key;

int msgid;

pthread_t tid;

if(argc != 2)

{

fprintf(stderr,"Usage:%s string\n", argv[0]);

exit(1);

}

/*

char path[256];

sprintf( path, "%s/", (char*)getenv("HOME") );

printf( "path is %s\n", path );

msgid=ftok( path, IPCKEY );

*/

if((key=ftok(MSG_FILE,'a'))==-1)

{

fprintf(stderr,"Creat Key Error:%s\n", strerror(errno));

exit(1);

}

if((msgid=msgget(key, IPC_CREAT | 0666/*PERM*/))==-1)

{

fprintf(stderr,"Creat Message  Error:%s\n", strerror(errno));

exit(1);

}

pthread_create( &tid, NULL, thr_test, &msgid );

fprintf(stderr,"msid is :%d\n", msgid);

msg.mtype = 1;

strncpy(msg.buffer, argv[1], BUFFER);

msgsnd(msgid, &msg, sizeof(struct msgtype), 0);

exit(0);

}
 

【編輯推薦】

  1. Linux多線程同步之命名管道
  2. linux多線程機(jī)制線程同步
  3. linux多線程之線程資源的釋放
責(zé)任編輯:趙寧寧 來(lái)源: chinaitlab
相關(guān)推薦

2010-01-21 11:22:35

Linux多線程同步

2010-01-21 11:27:30

linux多線程機(jī)制線程同步

2024-07-05 08:32:36

2012-06-05 02:12:55

Java多線程

2025-04-10 01:01:00

2015-07-22 09:39:38

IOS多線程同步

2015-07-22 09:51:51

iOS開(kāi)發(fā)線程

2024-06-28 08:45:58

2017-02-27 14:25:50

Java隊(duì)列Web

2013-07-16 12:13:27

iOS多線程多線程概念GCD

2009-03-12 10:52:43

Java線程多線程

2009-09-14 19:39:14

批量線程同步

2010-03-15 19:37:00

Java多線程同步

2011-04-14 13:27:53

Synchronize多線程

2023-06-07 13:49:00

多線程編程C#

2024-07-08 12:51:05

2021-03-11 06:01:41

Linux消息隊(duì)列

2011-06-22 13:57:54

Java多線程

2011-06-22 13:47:16

Java多線程

2009-07-17 17:29:13

多任務(wù)多線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 综合久久色 | 黄色在线免费观看 | 成人在线日韩 | 国产精品久久精品 | 午夜影院在线观看版 | 91免费在线 | 红桃视频一区二区三区免费 | 欧美日韩一区在线观看 | 天堂一区二区三区四区 | av第一页 | 91视频入口| 免费一区二区三区 | 中文字幕在线不卡播放 | 欧美 日韩 在线播放 | www.日本精品 | 国产视频中文字幕 | 韩国久久精品 | 亚洲精品美女视频 | 久久91| 国产成人自拍一区 | 人人人人干| 日本一区二区三区精品视频 | 一区二区在线不卡 | 日韩伦理电影免费在线观看 | 亚洲一区二区三区欧美 | 宅女噜噜66国产精品观看免费 | 亚洲午夜电影 | 中文字幕乱码一区二区三区 | 日韩欧美视频免费在线观看 | 五月天国产| 成人亚洲视频 | 久久国产美女视频 | 亚洲成人精品 | 亚洲国产精品久久久久秋霞不卡 | 毛片网在线观看 | 日韩福利片 | 天天干天天干 | 成人欧美一区二区三区黑人孕妇 | 日韩亚洲视频 | 国产成人精品久久二区二区91 | 欧美一区二区三区 |