2011-03-28 3 views
2

마침내 필자의 ​​telnet iPhone 응용 프로그램이 실행 중일 때 장치에 텍스트 명령을 보내고 있지만 장치가 빠르지는 않습니다.iPhone MultiThreading : List/Queue

이제 버튼을 누르면 휴대 전화는 문자 메시지를 기기의 IP로 보냅니다. 일정한 프로세스가 실행되고 매 25 초마다 대기열을 확인하도록 변경하려고합니다. 큐에 보낼 요소가 있으면 큐를 기다리고 다시 확인하십시오.

필자가 초기에 추측 한 바는 큐에 추가하는 단추와 보내기/검사기 메서드가 별도의 스레드에있을 수 있도록 일부 iPhone 스레딩 라이브러리를 확인해야한다는 것입니다.

나는 Operation Queue and Dispatch Queue에서 특별히 iOS Reference을보고있었습니다. 이 대기열은 내가보고 있어야하거나 여기에서 완전히 떨어져 있습니까?

UPDATE :

나는 내가 그러나 안전있는 NSMutableArray에게 밤은 스레드를 읽고 메신저 NSThread에서 원하는 것을 찾은 것 같아요. 객관적인 C에서 쓰레드 안전 한 목록 유형 큐 또는 벡터가 있습니까?

2 UPDATE :

가 나는 mutablearray를 사용하고 매번 내가 개체를 추가하거나 제거 주위} {잠금을 넣을 수 있을까요?

답변

1

당신은 올바른 길을 가고 있습니다. 일정한 시간 간격으로 작업을 실행하면 NSTimer과 같은 소리가납니다.

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(doTask) userInfo:nil repeats:YES]; 

설정에 인스턴스 변수에이 객체를 그리고 -doTask 0.25 초마다 실행됩니다 :이 동작을 얻으려면과 같이 타이머를 만들어보십시오. 배경 작업에 대해서는 NSOperationNSOperationQueue이 최선의 선택입니다. 사용자 정의 NSOperation 서브 클래스를 작성하고 적절한 메소드를 대체하여 백그라운드에서 태스크를 실행하십시오.

0

GCD가 더 나은 해결책이 될 수 있습니다. NSTimers는 정기적 인 작업에는 그리 좋지 않습니다. dispatch_after 설명서를 확인하십시오.

0

왜 비동기식 메서드를 통해 즉시 명령을 실행하지 않습니까?

프레임 워크가 멀티 스레딩을 처리하도록하는 것은 거의 항상 내 생각에 올바른 생각입니다.

+0

예를 들어, 이것에 관해서는 상당히 새로운 예를 들어 주시겠습니까? – SirRoot