linux c++接口超时设计
先说明一下环境,是linux平台c++,ndk编译环境。但函数的原理是相通的,windows环境也有对应的函数,所以需要理解的是接口的设计思想。那我们开始吧!
需求:等待一个http请求返回,若超时(假定3秒),则返回错误码并忽略后续动作的执行。若规定时间内返回,则执行后续动作。
首先需要了解几个概念:
多线程
一个进程是由若干线程组成的。这些线程之间:
共享 进程的堆空间、全局变量、静态变量、文件等公用资源。
独占 栈、寄存器
线程同步
多线程之间的同步就是因为线程之间有共享的资源而产生的,试想一下如果某个资源文件同一时刻,先后被多个线程修改,那最终的结果是不确定的,我们应该防止这种情况的发生。所以同步的含义是,多个线程之间应该是“有序”地 排队访问独占资源,消除结果的不确定性。
多线程同步的方式如下:
互斥锁
条件变量
读写锁
信号量
互斥锁
概念
互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )
声明互斥锁
pthread_mutex_t _mutex_api;
动态初始化互斥量(还有静态初始化,适用于局部变量)
头文件
#include <pthread.h>
@mutex :指向互斥锁的指针
@attr :互斥量属性,一般传NULL表示使用默认属性,即快速互斥锁(指调用线程会阻塞直到线程锁得到解锁为止)
@return:成功返回0,其余均表示错误
int pthread_mutex_init(pthread_mutex_t