我有一个API(用C语言编写),允许任意数量的传入连接。每个连接都由独立的pthread处理,当客户端连接到API时创建。
这些连接中的每一个都可以(但不必)更改服务器的属性,使得请求不能同时处理。
我的代码基本上遵循以下结构:
假设现在正在处理一个长时间的请求(例如10秒)。在此期间,另外5个请求进来了,因此另外5个线程会到达
我也读过关于递归
我的代码基本上遵循以下结构:
pthread_mutex_t lock;
void request_handler(char * request)
{
pthread_mutex_lock(&lock);
process_request(request);
pthread_mutex_unlock(&lock);
}
假设现在正在处理一个长时间的请求(例如10秒)。在此期间,另外5个请求进来了,因此另外5个线程会到达
pthread_mutex_lock
函数。
- 它们只是等待并按照预期继续执行(一个接一个地服务)吗?
- 是否保证按照接收顺序处理请求,还是在长请求完成后,任何一个等待的线程都可以开始执行?
我也读过关于递归
mutex
的内容,但由于一些原因,我想避免使用它们。此外,根据构造,我的代码不会尝试从一个单独的pthread
多次锁定。