2009-04-23 3 views
0

코코아에서는 두 개의 NSThreads, 하나의 생성자 및 하나의 소비자를 설정했습니다. 생성자는 NSMutableData에 데이터를 추가하고 수신기는 해당 데이터에서 NSInputStream을 열고 청크를 읽습니다.NSMutableData에서 NSInputStream을 읽어 NSStreamEventEndEncountered 신호를 보내는 방법

생산자 스레드는 소비자 프로세스보다 훨씬 빠르며 괜찮습니다. 그러나 생산자는 한정된 양의 노동을 생산하고 그 다음에 나간다. 소비자 스레드가 NSStreamEventEndEncountered 이벤트를 처리하고 싶습니다. NSInputStream이 NSMutableData에서 오는 경우 어떻게 신호 할 수 있습니까?

제작자가 스트림의 끝을 나타내는 마법의 번호로 일련의 바이트를 보내도록해야합니까?

답변

1

생산자가 NSMutableData에 데이터를 추가하고 수신자가 해당 데이터에서 NSInputStream을 열고 청크를 읽습니다.

그래도 작동하지 않습니다. the -initWithData: documentation :

data의 내용이 복사됩니다.

의미, 데이터 오브젝트에 내용을 추가 할 때 데이터 오브젝트의 내용을 따르지 않고 그 당시에는 데이터 오브젝트에있는 내용을 모두 복사합니다.

는 (동일 +inputStreamWithData: 간다.)

대신 pipe을보십시오.