随笔分类 - DNC++视频教程笔记
学习DN的C++时做的笔记
摘要:一.多线程1.了解多线程解决多任务实现。历史上Unix服务器不支持多线程Unix/Linux上实现多线程有两种方式:内核支持多线程使用进程的编程技巧封装进程实现多线程:轻量级多线程多线程的库:libpthread.so -lpthreadpthread.h2.创建多线程2.1.代码?回调函数2.2.线程ID?pthread_t2.3.运行线程?pthread_createint pthread_create(pthread_t *th,//返回进程IDconst pthread_attr_t *attr,//线程属性,为NULL/0,使用进程的默认属性void*(*run)(void*),//
阅读全文
摘要:回顾:多进程的问题:数据共享。多进程的问题:进程的上下文环境(context)文件描述符号是整数以及对应上下文环境多进程的问题:上下文环境共享一.SELECT TCP服务器编程模式1.select函数int select(int fds,//建议是监控的文件描述符号的最大值+1fd_set *readfds,//读文件描述符号集合//该参数既是输入,也是输出//输入:被监控的描述符号//输出:有数据的描述符号fd_set *writefds,fd_set *errfds,struct timeval*timeout);//指定阻塞时间限制//为NULL,永久返回:>0:发生改变的文件描述
阅读全文
摘要:一.TCP的编程模型回顾:UDP模型的UML图TCP模型的UML图案例1:TCP的服务器(在案例中使用浏览器作为客户程序)socket建立服务器的文件描述符号缓冲bind把IP地址与端口设置到文件描述符号中listen负责根据客户连接的不同IP与端口,负责生成对应的文件描述符号及其信息accept一旦listen有新的描述符号产生就返回,否则阻塞。View Code //tcpserver.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#in
阅读全文
摘要:brk/sbrk维护一个位置。 brk/sbrk改变这个位置。brk改变绝对位置sbrk改变相对位置昨天的补充:永远记住:C的基本类型就那几种。所有全新类型都是使用typedef重新定义的。类型重定义的好处:1. 维护方便2. 便于移植(每个系统中都用同一个名,不用修改)3. 容易理解一、 映射虚拟内存没有任何额外维护数据的内存分配 mmap/munmap1. 函数说明:void *mmap( void *start, //指定映射的虚拟地址,如果为0,则由系统指定开始位置 size_t length,//指定映射空间的大小。 pagesize的倍数 int prot, ...
阅读全文
摘要:malloc怎么分配空间 malloc与new的关系 看完下面的2再回答这个问题。 2. linux对内存的结构描述 a) /proc/${pid}/ 存放进程运行时候所有的信息。程序一结束,该目录就删掉了。 b) 任何一个程序的内存空间其实分成4个基本部分。 i. 代码区 ii. 全局栈区 iii. 堆 iv. 局部栈小实验: 运行一个只包含while(1);的程序,然后另起一个终端,cd /proc下面的对应进程的pid目录,cat maps,查看到运行进程的内存空间分配情况。进程查看: ps aue c) 理解程序的变量与内存空间的关系小实验:#incl...
阅读全文