GCDAsyncSocket 및 AsyncSocket 제목은 모두 비동기 적이며 상태가 비슷합니다. 그러나 소켓에 관한 모든 내용은 TCP 데이터 패킷에서 오는 무제한 길이의 단일 연속 스트림 처리에 관한 것입니다. 처음에는 좀 혼란 스러웠습니다. AsyncSocket은 사용자 정의 요청 및 응답 패킷을 만들고이를 비동기 적으로 처리하여 일부 마법을 수행합니다 (예를 들어 요청 A, B, C를 작성한 경우 서버의 응답이 다른 순서, 예를 들어 B, C, A). 소켓 세계를 파고 들자면 소켓 읽기를 통해 서버에서 오는 데이터가 비동기가 아닌 버트 동기가된다는 것을 알았습니다. 하나의 스트림을 읽고 패킷으로 잘라내서 내 대의원 클래스에 콜백을 작성하는 것입니다. 요청을 A, B, C로하면 서버의 응답은 A, B, C와 같은 순서로 올 것입니다. AFAIK, AsyncSocket은 메인 실행 루프를 사용하므로 메인 쓰레드 인 메인 큐를 다시 사용합니다. 그렇다면 비동기적인 부분은 무엇입니까?AsyncSocket/GCDAsyncSocketis의 어떤 부분이 비동기입니까?
0
A
답변
2
읽기 및 쓰기 호출이 스레드를 차단하지 않고 즉시 반환된다는 점에서 비동기식이며 위임 및/또는 블록을 통해 나중에 결과를 처리 할 수 있습니다.
0
UIAdam이 맞습니다. 예를 들어, AsyncSocket은 다른 스레드에서 결과를 처리하여 읽기 스트림 콜백을 구현합니다. 다음은 소스 코드 조각입니다.
static void MyCFReadStreamCallback (CFReadStreamRef stream, CFStreamEventType type, void *pInfo) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
AsyncSocket *theSocket = [[(AsyncSocket *)pInfo retain] autorelease];
[theSocket doCFReadStreamCallback:type forStream:stream];
[pool drain];
}
관련 문제
- 1. 반성의 어떤 부분이 부적합한가요?
- 2. cudaFree() 비동기입니까?
- 3. 액션 스크립트의 어떤 부분이 장면에 들어가고 클립에 어떤 부분이 들어 있습니까?
- 4. GWT 애플리케이션의 어떤 부분이 JavaScript로 컴파일됩니까?
- 5. 은 node.js 'console.log 비동기입니까?
- 6. Node.js Array.map()이 비동기입니까?
- 7. @Singleton @Startup 완전히 비동기입니까?
- 8. MySQL 트리거가 비동기입니까?
- 9. 데이터베이스 트리거, 비동기입니까?
- 10. Android 로깅 방식이 비동기입니까?
- 11. ASIHTTPRequest의 다른 대리인은 비동기입니까?
- 12. ftruncate()가 비동기입니까?
- 13. 은 glib 신호가 비동기입니까?
- 14. WCF 서비스의 프리즘 - 항상 비동기입니까?
- 15. 비트 맵 재활용 프로세스가 비동기입니까?
- 16. 동적 스크립트 태그 추가가 비동기입니까?
- 17. OIO와의 연결/쓰기는 실제로 비동기입니까?
- 18. Struts 타일 - 각 타일은 비동기입니까?
- 19. 표시 부분이
- 20. 함수의 어느 부분이 DAO 계층에 있어야하고 어떤 서비스 계층에 있어야합니까?
- 21. 컴퓨터의 어떤 부분이 텍스트를 렌더링합니까? 하드웨어 또는 소프트웨어?
- 22. RTF 구문의 어떤 부분이 잘못되었는지 알 수있는 방법은 무엇입니까?
- 23. 내 grails 앱의 어떤 부분이 grails clean에서 돌아가는가
- 24. 템플릿의 어떤 부분이 인스턴스화되어 있는지 확인하는 방법은 무엇입니까?
- 25. 모델과 컨트롤러 중 어떤 부분에 들어가는 부분이 있습니까?
- 26. 함수의 어떤 부분이 단위 테스트에서 다루지 않는지 식별
- 27. 이 CSS 디자인의 어떤 부분이 IE에서 멀어지고 있습니까?
- 28. 큰 파일의 어떤 부분이 변경되었는지 모니터 할 수있는 방법
- 29. Windows의 어느 부분이 mscoree.dll을로드합니까?
- 30. Android MapView지도 부분이 누락되었습니다.