읽기 및 쓰기를 기다리는 동안 '선택'하는 방법이 있습니까? 또한 새 파일 설명자를 추가 할 수 있습니까? preferrably 한 스레드에서?C++ 비동기 프로그래밍
답변
이제 (수신 연결을 허용 할 수있는 소켓 기반 서버 인) 시나리오가 무엇인지 알았으므로 청취 소켓에 대한 파일 설명자를 select
의 목록에 추가 할 수 있다는 것을 알고 계셨습니까? 예 : http://www.lowtek.com/sockets/select.html.
(인용 함 예 :
fd_set socks;
FD_ZERO(&socks);
// Add listener socket
listen(sock, n);
FD_SET(&socks, sock);
// Add existing socket connections
for (i = 0; i < num_existing_connections; i++)
{
FD_SET(&socks, connection[i]);
}
// Will break if any of the existing connections are active,
// or if a new connection appears.
select(..., &socks, ...);
웹 사이트는 매우 도움이되었습니다. 감사! – Andrew
내 생각에, 당신은 같은 스레드에서 할 수 있지만 동시에 할 수 없습니다. 이와 같은 문제에서 필자는 보통 더미 루프백 소켓을 디스크립터 목록에 추가하고 FD_LIST에 새 소켓을 추가해야 할 때마다 더미 소켓에 바이트를 보내면 Select Loop가 손상됩니다. 그런 다음 FD_LIST를 업데이트하고 select를 사용하여 다시 시작할 수 있습니다.
마지막 매개 변수를 사용하여'select' 호출에 타임 아웃을 추가 할 수도 있습니다. –
물론 있습니다. 그러나이 경우 select에서 오랜 시간 간격을 사용한다면 새로운 소켓이 FD_LIST에 추가 될 때까지 기다려야합니다. select에서 매우 짧은 간격을 사용하거나 즉시 소켓을 추가 할 필요가없는 경우 interval 매개 변수를 사용하는 것이 좋습니다. – Tayyab
- 1. 비동기 소켓 프로그래밍
- 2. 비동기 소켓 프로그래밍
- 3. Entity Framework를 사용한 비동기 프로그래밍
- 4. 비동기 프로그래밍과 비교하여 병렬 프로그래밍
- 5. C#의 비동기 소켓
- 6. C# 비동기 소켓 질문
- 7. C# 비동기 전송
- 8. C# 비동기 소켓 문제
- 9. ASP.NET의 비동기 작업 (C#)
- 10. C# 비동기 시작 메서드
- 11. 비동기 프로그래밍 모델을 구현하는 좋은 방법입니까?
- 12. .net의 비동기 프로그래밍, 스레딩에 관한 질문
- 13. ASP.NET에서 비동기 프로그래밍 모델을 사용하는 방법?
- 14. 소켓에서 데이터를 사용할 수없는 비동기 프로그래밍 모델
- 15. JavaScript의 비동기 프로그래밍 입문. 어떤 충고?
- 16. Nginx와 비동기 프로그래밍 모델을 지원하는 언어를 결합해야합니까?
- 17. ASP.NET에만 비동기 프로그래밍 모델이있는 이유는 무엇입니까?
- 18. C++에서 양방향 비동기 통신
- 19. C# 비동기 객체 전송 (소켓?)
- 20. 비동기 호출 목표 C iphone
- 21. 비동기 스레드로부터 안전한 C++ 로깅
- 22. 비동기 파일 복사를위한 C# 반복자
- 23. C# 비동기 호출을 동기식으로 만들기
- 24. 표준 C++의 비동기 스레드
- 25. 비동기 함수 호출 C++ 0X
- 26. C# 비동기 소켓 통신 차단
- 27. C#에서 MongoDB에 비동기 삽입
- 28. 비동기
- 29. 비동기 프로그래밍 모델에서 사용할 수있는 적절한 이름 지정 지침은 무엇입니까?
- 30. 소켓 프로그래밍 : 보내기 및 읽기의 비동기 메서드로 데이터의 순서를 보장 할 수 있습니까? 내가 지속적으로 C#을 비동기 메서드를 호출하면
당신은 단지 하나 개의 스레드를 가지고 있다면, 누가 새로운 파일 기술자를 추가? –
@Oli : OP는'select' 호출을 취소하고'select' 호출이 있기 전에 해당 기술자를 추가하려고합니다. –
@Andre : 단 하나의 스레드 만 있으면 * '선택'을 중단하고 싶을 때 * 사용할 수 있습니까? 외부 자극이 있습니까? –