zoukankan      html  css  js  c++  java
  • c++ 后台 常备知识

    关于带缓冲的io与不带缓冲的io,此时的缓冲指应用层面的缓冲,即先写入缓冲区(用户空间),缓冲区满时执行系统调用,将数据拷贝至内核(内核缓冲区),内核缓冲区满才执行io

    即双缓冲,第一层为了减少系统调用次数,第二层为了减少io次数

    进程间通信方式

    匿名pipe,通过文件名描述符建立管道,pipe(fd),然后调用fork,通过fd来读写管道中的数据,可想而知父进程和子进程共享的东西是文件描述符

    高级pipe,pipe、fork、exe()执行其他程序,即实现两个不同程序的通信

    有名pipe,通过 int mkfifo(const char *pathname, mode_t mode); 打开一个有名管道,一旦创建有名管道后,就可以使用一般的文件操作函数操作它,即用fd=fopen(文件名),用fd读写

    消息队列,通过ftok返回一个key值:key_t ftok( char * fname, int id ),msqid = msgget(key, IPC_CREAT|0777) 创建一个消息队列msqid。客户端用ftok传入相同文件名,可活动key值

    信号量, int semget(key_t key, int num_sems, int sem_flags)

    内存映射之mmap ,通过将一段硬盘地址映射至内存,实现多进程与服务进程间的通信,容量大

    内存映射至shm,通过将一段主存空间映射至内存

  • 相关阅读:
    selenium使用
    爬取梨视频
    django实现事务
    django admin模块使用
    跨域问题和django中实现跨域
    Java多线程Condition定点通知
    Java创建线程四种方式
    JVM之JVM体系结构
    Java线程状态
    Java正则表达式解析网页源码
  • 原文地址:https://www.cnblogs.com/GreenScarf/p/11099620.html
Copyright © 2011-2022 走看看