
linux
文章平均质量分 68
andyleung520
x
展开
-
自旋锁 spinlock
自旋锁和互斥锁都是用于保护共享资源的锁,但它们的实现方式和特点有所不同:实现方式:互斥锁采用的是阻塞等待的方式,即当一个线程请求锁时,如果锁已经被其它线程占用了,那么该线程将被阻塞等待,直到该锁被释放。而自旋锁则采用循环等待的方式,即当一个线程请求自旋锁时,如果锁已经被其它线程占用,则该线程会循环等待,直到轮到它获取锁为止。线程调度机制:互斥锁阻塞等待时,会把线程从运行队列中移除,等待解锁时再加入运行队列。而自旋锁循环等待时,线程不会被移除运行队列,而是等待占用锁的线程释放锁。原创 2023-06-16 19:29:06 · 495 阅读 · 0 评论 -
gdb如何打印stl各种容器
[root@lcl]# cat ~/.gdbinit## STL GDB evaluators/views/utilities - 1.03## The new GDB commands:# are entirely non instrumental# do not depend on any "inline"(s) - e.g. size(), [], etc# are extremely tolerant to debugger原创 2023-04-08 15:09:14 · 489 阅读 · 0 评论 -
内存分配器—TcMalloc
高性能。大多数对象的分配和释放都不需要产生太多的竞争,因为tcmalloc 维护了thread-cache 来提供当前线程的内存分配需求。所以,应用大多数的内存申请需求不会有锁的竞争,而且在多核场景有较好的扩展性。灵活的使用内存资源。用户不使用的内存,tcmalloc会选择服复用或者归还操作系统。降低了每个请求的内存开销。通过分配相同大小的page 降低内存使用的开销,这在小对象场景较为有效。内部信息统计开销较低。能够开启细粒度的应用内存占用信息,来帮助用户展示tcmalloc内部内存使用的细节。原创 2023-03-18 17:25:35 · 612 阅读 · 0 评论