
webserver
文章平均质量分 53
zsiming
Why do we fall?
展开
-
TCP和UDP在socket编程上的差异(总结)
UDP不需要监听(listen函数)UDP不需要创建连接(accept函数)UDP获取接收方的信息(IP、端口)是在recvfrom函数,而TCP是在accept函数。UDP不需要创建连接(connect函数)收发消息使用的函数不同。原创 2022-09-28 08:56:44 · 1499 阅读 · 0 评论 -
web服务器改进:迷你线程池+CAS自旋锁(Demo)
最近有学习一些关于C++11从语法层面上提供的多线程编程。本来考虑使用C++11的互斥锁来实现线程间的互斥,而C++提供的互斥锁是比较简单的,和Linux的使用没有太大区别。另一方面,在面试的时候,会涉及一些无锁的互斥手法。在webserver项目中,请求队列的任务在出队和入队上都需要互斥锁。而互斥锁比较重,需要执行系统调用。而系统调用又需要陷入内核态,调度完切换回用户态又需要时间,因此效率较低。这时候,采用CAS+自旋锁的手法效率会比较高。因此,下面的例子借鉴muduo网络库实现一个迷你版的线程池。...原创 2022-08-30 21:06:00 · 360 阅读 · 0 评论 -
web服务器设计(二):线程池的设计
在此,设计的线程池主要创建了多个子线程来从请求队列中拿出请求并执行。同时,还需要提供插入请求的接口,用于主线程在完成读写I/O后将请求插入队列中。同时,线程池的设计还需要考虑线程安全。在不同的线程操作队列的时候,需要对队列进行加锁。没有请求在队列的时候,为了降低CPU的利用,我们利用信号量在队列中没有请求时挂起线程,在插入一个请求后唤醒。......原创 2022-07-16 16:36:04 · 446 阅读 · 0 评论