AVAudioPlayer의 재생, 타이머 및 파일 쓰기 작업이 동시에 하나 이상의 프로세스를 시작해야합니다.iPhone - 두 개의 프로세스를 동시에 시작하십시오.
방금 방법으로 작성하면 모든 명령이 순차적으로 실행되고 모든 작업의 시작이 약간 지연됩니다.
아이디어가 있으십니까? 어떤 도움을 주시면 감사하겠습니다.
감사합니다.
AVAudioPlayer의 재생, 타이머 및 파일 쓰기 작업이 동시에 하나 이상의 프로세스를 시작해야합니다.iPhone - 두 개의 프로세스를 동시에 시작하십시오.
방금 방법으로 작성하면 모든 명령이 순차적으로 실행되고 모든 작업의 시작이 약간 지연됩니다.
아이디어가 있으십니까? 어떤 도움을 주시면 감사하겠습니다.
감사합니다.
왜 스레드를 사용하지 않습니까?
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
을하거나 NSOperationQueue
로 NSOperation
를 사용하여 :
당신은 사용하여 쉽게 할 수 있습니다.
자세한 내용은 this question을 참조하십시오.
참고 : 당신이 또 다른 runloop을해야 다른 스레드에서 타이머를 사용하려면 어떤 오토 릴리즈 클래스
추가 너무 많은 동시성 내에서 NSTimer을 예약 할 수 있습니다 생각하지 않습니다. 백그라운드 스레드에서 블로킹 파일 쓰기 호출을 수행하는 동안 타이머 설정 및 주 스레드에서 오디오 파일 재생을 조사 할 수 있습니다. 중요한 개념은 특히 파일 또는 네트워크 I/O를 처리 할 때 주 스레드에서 호출을 차단하지 못하게하는 것입니다.
iPhone이 단일 CPU 장치이기 때문에 추가 스레드가 너무 많이 생성되는 것을 피하고 다중 스레드로 인해 더 많은 리소스가 소모됩니다.
한 번만 수행하는 경우 performSelectorInBackground가 가장 간단한 코드입니다. 그러나 당신이 그것을 많이한다면 그것은 최적이 아닙니다. NSOperation 경로를 제안합니다. –
고마워요. – lostInTransit