ypj's blog

[C++智能指针] shared_ptr

共享所有权 shared_ptr表达的是共享所有权的语义,多个shared_ptr可以指向同一个对象,它们共同决定对象的生命周期。只有当最后一个shared_ptr被销毁时,对象才会被delete。 但是共享所有权不是免费的,每个shared_ptr的拷贝和析构都需要更新引用计数,而且引用计数必须是线程安全的(原子操作)。此外shared_ptr内部还维护了一个控制块来存储引用计数和其它...

[TCP/IP网络编程] 地址族与数据序列

分配给套接字的IP地址与端口号 IP是网络协议的简写,IP协议规定了数据包的格式,地址怎么编码、怎么寻址、怎么路由转发。为了收发网络数据我们需要按照IP协议来给计算机分配一个值(IP地址)。端口号是为了区分程序中创建的套接字而分配给套接字的编号(从操作系统的视角来看,端口号是分配给进程的,端口最终被某个进程占用,进程通过套接字持有)。 IP地址 IP地址分为两类: IPv4 :...

[C++并发编程] 并发思维与基础

并发思维与基础 并发与并行的区别 并发是一种程序的组织方式:把一个复杂的问题拆成多个独立、可以交替推进的子任务,然后用某种机制(线程、协程、事件循环)来管理它们的执行顺序。 并发不要求多个CPU核心,在单核机器上也可以通过操作系统的时间片轮转让多个线程交替使用CPU。 并行则是指多个操作真正在同一时间物理上同时执行,这需要多核CPU、多处理器或GPU等硬件支持。 在C++内,我们用s...