epoll + 스 레 드 풀 을 말씀 드 리 겠 습 니 다.
잠시 만 요. 제 코브라 를 보 여 드릴 게 요.Liux 죠? 아직 완벽 하 지 는 않 지만.
#ifndef _LC_COBRA_EPOLLER_H
#define _LC_COBRA_EPOLLER_H
/*
* Copyright(c)2008
*
* : Epoller
* :
* : Epoller epoll,
Windows IOCP( )
io 。
Epoller :
epoll
,
Epoller , ,
。
*
* : cobra 1.05
* :
* E-Mail : [email protected]
* Blog : http://guan-zhong-dao-ke.blog.163.com/
* : 2008 04 28
*/
#include "../common/Header.h"
#include <sys/epoll.h>
#include <sys/socket.h>
#include <pthread.h>
#include <semaphore.h>
class EpollerEvent;
class Epoller
{
public:
/*
Epoller
*/
enum EPOLLERMESSAGE
{
EPOLLERREAD,
EPOLLERWRITE
};
private:
int m_epoller; // epoller
pthread_mutex_t m_lock; //
pthread_cond_t m_cond; //
sem_t m_sem; //
Queue<EpollerEvent, EmptyLock> m_queue; //
public:
Epoller();
~Epoller();
public:
/*
epoller
queuesize :
number :
*/
bool init_epoller(size_t queuesize, size_t number);
/*
epoller
sock :
iMsg : Epoller
pEvent :
*/
bool register_epoller_socket_event(SOCKET sock, int iMsg, EpollerEvent* pEvent);
/*
Epoller
sock :
iMsg : Epoller
pEvent :
*/
bool change_epoller_socket_event(SOCKET sock, int iMsg, EpollerEvent* pEvent);
/*
Epoller
*/
void delete_epoller_socket_event(SOCKET sock, int iMsg);
/*
Epoller
pEvent :
, Epoller
windows PostQueuedCompletionStatus
*/
void post_event_to_epoller(EpollerEvent* pEvent);
/*
Epoller
pEvent :
, Epoller , ,
windows GetQueuedCompletionStatus
*/
bool get_event_from_epoller(EpollerEvent* pEvent, size_t timeout);
/*
Epoller ,
timeout :
*/
int listen_epoller_event(int timeout);
/*
epoller
*/
void destroy_epoller();
};
extern Epoller g_Epoller;
#endif
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 메커니즘 의 스 레 드 생 성target 을 실행 대상 으로 지정 한 name 을 이름 으로 하고 group 에서 참조 하 는 스 레 드 그룹의 일원 으로 새 Thread 대상 을 할당 합 니 다. 이 스 레 드 가 독립 된 Runnable 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.