나는 TCP 소켓을 사용하는 C/Linux 채팅 서버를 가지고있다. libev를 사용할 때 소켓에 대해 한 번씩 이벤트를 읽는 ev_io 와처를 만들 수 있습니다. 뭔가 같은 :Libev - 입출력 콜백
ev_io* new_watcher = (ev_io*)malloc(sizeof(ev_io));
//initialize the watcher
ev_init(new_watcher, read_cb);
//set the fd and event to fire on write
ev_io_set(new_watcher, watcher->fd, EV_READ);
//start watching
ev_io_start(loop, new_watcher);
하고 읽을 수있는 데이터가있을 때 읽기 이벤트 만 발생하기 때문에이 잘 작동합니다. 그러나 필자는 쓰기 이벤트가 다르기 때문에 끊임없이 쓰기 때문에 이벤트를 다르게 처리해야합니다. 이 문제를 해결하기 위해 필자는 write_callback을 사용하여 데이터를 쓸 준비가되었을 때만 데이터를 기록 할 수있는 ev_io 관찰자를 만든 다음 write_callback이 메시지를 보낸 후 watcher를 삭제합니다.
즉, 메시지를 처리해야 할 때마다 쓰기 감시자를 할당, 초기화, 설정, 감시, 해제 및 할당 해제 중임을 의미합니다. 나는 이것을 잘못하고 비효율적으로 다루고 있을지도 모른다고 걱정한다.
libev에서 write_callback 이벤트를 처리하는 가장 좋은 방법은 무엇입니까?
미리 감사드립니다.