Tôi bị kẹt trong một tình huống đối số truyền trong libev.Libev, Cách chuyển đối số cho các cuộc gọi lại có liên quan
Thông thường, libev nhận gói trong một chức năng như * receive_callback *, đó là OK, nhưng trong thực tế, chúng ta cần phải cử một người họ hàng * write_callback * để đối phó với công việc cụ thể theo gói nhận được. Ví dụ:
S_RECV_MSG* pstRecvMsg = (S_RECV_MSG*) recv_buff;
switch(pstRecvMsg->wMsgType) {
case 1:
ev_io_init(w, write_callback1, w->fd, EV_WRITE);
break;
case 2:
ev_io_init(w, write_callback2, w->fd, EV_WRITE);
break;
case 3:
// .......
}
Câu hỏi của tôi là, nếu write_callbackX
cũng phải đọc nội dung cụ thể trong recv_buff, làm thế nào chúng ta có thể vượt qua đối số recv_buff đến callbackX? Chúng ta có phải chịu gánh nặng và sự xấu xa của các biến toàn cầu ở đây không?
Đó là câu trả lời đúng, nếu bạn muốn bạn có thể viết nó như là một câu trả lời thực sự và chấp nhận nó, giúp người khác dễ dàng tìm thấy thông tin hơn. – dnaq
Ít nhất bạn quay trở lại và tiếp tục nghiên cứu thay vì chờ đợi một câu trả lời :) Vui vì bạn đã giải quyết nó. –
Tôi đề nghị viết giải pháp của bạn như là một câu trả lời (và sau đó chấp nhận nó) thay vì chỉnh sửa nó trong câu hỏi – Shahbaz