IOS 개발-다 중 스 레 드 큐 테스트 코드
3353 단어 IOS다 중 스 레 드 대기 열
현재 고려 하고 있 는 문제:
1.대열 에 몇 명의 소비자 가 있 습 니까?
2.대기 열 에 추 가 된 새 task 는 동기 화 실행(현재 스 레 드 차단)입 니까?비동기 입 니까?(현재 스 레 드 가 막 히 지 않 습 니 다)
3.여러 대기 열 간 스케줄 링(이 글 은 언급 되 지 않 음)
//
// ( )
//
// :
// 1) :
// 1.1 dispatch_queue_t , FIFO
// 1.2 :
// 1.3 : (block )
// 1.4 : ,
// 2) , ( ) ( )
// 2.1 :A , B ,A B
// 2.2 : A , B ,A ,B
// :
// ATask: fooA Block
// BTask: fooB Block
//
//
// :
// , ,
#import "TestQueueSi.h"
@interface TestQueueSi ()
@property (strong,nonatomic) dispatch_queue_t serialQueue;
@property (strong,nonatomic) dispatch_queue_t concurrentQueue;
@end
@implementation TestQueueSi
- (instancetype)init {
self = [super init];
if(self) {
_serialQueue = dispatch_queue_create("chenhh.serialQueue", DISPATCH_QUEUE_SERIAL);
_concurrentQueue = dispatch_queue_create("chenhh.concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
}
return self;
}
/**
QUEUE_SERIAL( )
1.ATask , BTask
2.BTask , (ATask BTask),BTask ,
3.
*/
- (void)testSerialQueueSync {
dispatch_sync(_serialQueue,^{
[self fooA];
dispatch_sync(_serialQueue,^{
[self fooB];
});
[self fooA];
});
}
/**
QUEUE_CONCURRENT( )
1.ATask , BTask,Atask
2.BTask , (ATask BTask),BTask
3.BTask ,ATask ,
*/
- (void)testConcurrentQueueSync {
dispatch_sync(_concurrentQueue,^{
[self fooA];
NSLog(@"first");
//
dispatch_sync(_concurrentQueue,^{
[self fooB];
});
// ,
[self fooA];
});
}
/*
QUEUE_SERIAL( )
1.ATask , BTask,Atask
2.BTask , (ATask ),BTask
3.ATask , ,BTask
*/
- (void)testSerialQueueAsync {
dispatch_async(_serialQueue,^{
[self fooA];
dispatch_async(_serialQueue,^{
[self fooB];
});
[self fooA];
});
}
/**
QUEUE_CONCURRENT( )
1.ATask , BTask,Atask
2.BTask , (ATask ),BTask (ABTask )
*/
- (void)testConcurrentQueueAsync {
dispatch_async(_concurrentQueue,^{
[self fooA];
//
dispatch_async(_concurrentQueue,^{
[self fooB];
});
// ,
[self fooA];
});
}
- (void)fooA {
NSLog(@" ************ fooA ************ ");
}
- (void)fooB {
NSLog(@" ************ fooB ************ ");
}
@end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IOS에서 ReplayKit 및 RTC 사용 방법응용된 소리와 아나운서의 소리를 포함한다.이 두 가지 수요를 감안하여 우리는 스크린 공유를 하는 생방송에 필요한 미디어 흐름을 간단하게 분석할 수 있다. 만약 우리가 Audio App과 Audio Mic를 두 개의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.