当前位置: 首页 > news >正文

外贸移动端网站模板网站建设sem账户搭建

外贸移动端网站模板,网站建设sem账户搭建,网络推广引流是做什么的,白山市网站建设简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的理解IPC通信消息队列、管道、socket两次内存拷贝与共享内存一次内存拷贝。 2.IPC通信消息队列、管道、socket、共享内存介绍 在Linux和Android中进程间通信IPC的方式有很多种包括管道Pipe、消息队列Message Queue、共享内存Shared Memory、信号量Semaphore、套接字Socket等。其中管道、消息队列、套接字都需要进行两次内存拷贝而共享内存只需要一次内存拷贝。 1. 两次内存拷贝的IPC方式 管道Pipe 当一个进程向管道中写入数据时数据首先会被拷贝到内核缓冲区然后当另一个进程从管道中读取数据时数据会从内核缓冲区拷贝到该进程的内存空间。这就是两次内存拷贝。 消息队列Message Queue 消息队列的工作方式与管道类似数据在发送和接收时都需要经过内核缓冲区因此也需要两次内存拷贝。 套接字Socket 套接字在发送和接收数据时数据也需要经过内核缓冥区因此也需要两次内存拷贝。 2. 一次内存拷贝的IPC方式 共享内存Shared Memory 共享内存是最快的IPC方式因为进程是直接对内存进行操作数据不需要在进程和内核之间进行拷贝。但是由于多个进程可以同时操作同一块内存因此需要使用信号量等同步机制来防止数据的不一致。 3.总结 一次内存拷贝 一次内存拷贝是指数据在用户空间和内核空间之间只进行了一次拷贝。在Linux和Android中使用共享内存shared memory实现IPC通信是一种一次内存拷贝的方式。共享内存允许多个进程共享同一块物理内存因此数据被写入内核空间后其他进程可以直接在内存中读取数据避免了多次拷贝的开销。 两次内存拷贝 两次内存拷贝指数据在用户空间和内核空间之间进行了两次拷贝。在Linux和Android中使用Socket、管道pipe和消息队列message queue进行IPC通信会涉及两次内存拷贝。 3.代码实例 1.共享内存进行一次内存拷贝 #include iostream #include sys/shm.h #include cstringint main() {key_t key ftok(/tmp, S);int shmid shmget(key, 1024, 0666 | IPC_CREAT);char *data (char*)shmat(shmid, nullptr, 0);std::string message Hello, IPC using shared memory!;std::memcpy(data, message.c_str(), message.size());shmdt(data);shmctl(shmid, IPC_RMID, nullptr);return 0; }2.Socket进行两次内存拷贝 // 服务器端 #include iostream #include sys/socket.h #include cstringint main() {int server_sock socket(AF_INET, SOCK_STREAM, 0);// 绑定和监听int client_sock accept(server_sock, nullptr, nullptr);std::string message Hello, IPC using sockets!;send(client_sock, message.c_str(), message.size(), 0);close(client_sock);close(server_sock);return 0; }// 客户端 #include iostream #include sys/socket.h #include cstringint main() {int client_sock socket(AF_INET, SOCK_STREAM, 0);// 连接服务器char buffer[1024];recv(client_sock, buffer, sizeof(buffer), 0);std::cout Message received from server: buffer std::endl;close(client_sock);return 0; }3.管道进行两次内存拷贝 #include iostream #include unistd.h #include cstringint main() {int pipe_fds[2];if (pipe(pipe_fds) -1) {std::cerr Failed to create pipe std::endl;return 1;}const char* message Hello, IPC using pipes!;const size_t len strlen(message);if (write(pipe_fds[1], message, len) ! static_castssize_t(len)) {std::cerr Failed to write to pipe std::endl;return 1;}char buffer[64];ssize_t bytes_read read(pipe_fds[0], buffer, sizeof(buffer));if (bytes_read -1) {std::cerr Failed to read from pipe std::endl;return 1;}std::cout Message read from pipe: std::string(buffer, bytes_read) std::endl;close(pipe_fds[0]);close(pipe_fds[1]);return 0; }4.消息队列进行两次内存拷贝 #include iostream #include cstring #include sys/msg.hstruct Message {long type;char text[100]; };int main() {key_t key ftok(/tmp, Q);int msgid msgget(key, 0666 | IPC_CREAT);Message message;message.type 1;std::strcpy(message.text, Hello, IPC using message queues!);msgsnd(msgid, message, sizeof(message.text), 0);msgrcv(msgid, message, sizeof(message.text), 1, 0);std::cout Message received from message queue: message.text std::endl;msgctl(msgid, IPC_RMID, nullptr);return 0; }5.信号量进行两次内存拷贝 #include iostream #include sys/sem.h #include sys/ipc.h #include sys/types.h #include unistd.h #include cstringint main() {key_t key ftok(/tmp, S);int semid semget(key, 1, IPC_CREAT | 0666);if (semid -1) {std::cerr Failed to create semaphore std::endl;return 1;}sembuf acquire {0, -1, SEM_UNDO};sembuf release {0, 1, SEM_UNDO};if (semop(semid, acquire, 1) -1) {std::cerr Failed to acquire semaphore std::endl;return 1;}// Critical section - perform operations that require exclusive accessstd::string message Hello, IPC using semaphores!;// Perform operations on the shared resourceif (semop(semid, release, 1) -1) {std::cerr Failed to release semaphore std::endl;return 1;}return 0; }
http://www.hkea.cn/news/14277130/

相关文章:

  • 外贸谷歌网站推广切削工具东莞网站建设
  • 灰色网站网站在线修图编辑器
  • 做网站一天能赚多少钱遵义网站开发
  • 河南平顶山网站建设公司免费发做网站
  • 镇江网站建设包括哪些专业网站建设平台代理商
  • 贵州专业网站建设费用南通市建设局网站6
  • 高端企业网站建设蓦然郑州网站建设wordpress进不到后台
  • 做外账要登什么网站wordpress jekyll 选择
  • 高端网站建设公司有哪些项目局域网建WordPress
  • 建设网站要准备什么新乡网络公司推荐
  • 张家港外贸网站制作江苏省住房和城乡建设局
  • 建筑施工单位网站怎么做淘宝推广网站
  • 网站开发与运用小白建设论坛网站
  • 做自媒体有哪些素材网站wordpress++xml
  • 北京微信网站建设费用网站推广主要怎么做
  • 查询网站域名备案微网站平台建设方案
  • 网站创建app设计网页界面
  • 视频一键生成网址链接莆田seo培训
  • 仿大学网站网页代码wordpress进后台
  • 加盟凡科建站甘肃省城乡和建设厅网站
  • 设计班级网站建设公司名称大全集最新三个字
  • 彩票网站的表格是如何做的cdn wordpress
  • 网站建设类外文翻译北京网站开发一般多少钱
  • 建网站是怎么造成的wordpress 剑侠情缘主题
  • 重庆高端网站设计成都天空在线
  • 免费做图素材网站成都 网站 建设
  • 公司网站建设的普遍性google排名
  • 济南网站建设开发公司哪家好wordpress认证
  • 擼擼擼做最好的导航网站做网站要搭建本地服务器么
  • 傻瓜式搭建网站怎么制作商城小程序