NSMainQueueConcurrencyTypeおよびNSPrivateQueueConcurrencyTypeで初期化された管理オブジェクトコンテキストは、操作がFIFO順に実行されるシリアルキューであるメインキューおよびプライベートキューと結びついています。NSMainQueueConcurrencyTypeコンテキストとNSPrivateQueueConcurrencyTypeコンテキストの同時実行性?
NSLog(@"Current thread : %@", [NSThread currentThread]);
[mainMoc performBlock:^{
NSLog(@"main 1 - %@", [NSThread currentThread]);
}];
[mainMoc performBlockAndWait:^{
NSLog(@"main 2 - %@", [NSThread currentThread]);
}];
[mainMoc performBlock:^{
NSLog(@"main 3 - %@", [NSThread currentThread]);
}];
[bgMoc performBlock:^{
NSLog(@"bg 1 - %@", [NSThread currentThread]);
}];
[bgMoc performBlockAndWait:^{
NSLog(@"bg 2 - %@", [NSThread currentThread]);
}];
[bgMoc performBlock:^{
NSLog(@"bg 3 - %@", [NSThread currentThread]);
}];
が、私はそれがシリアル順に
main 1
、main 2
とmain 3
bg 1
のような、bg 2
とbg 3
を印刷するように期待していたが、代わりに、これは印刷された:以下のサンプルコードでは
Current thread : <NSThread: 0x60000006fb80>{number = 1, name = main}
main 2 - <NSThread: 0x60000006fb80>{number = 1, name = main}
bg 1 - <NSThread: 0x600000268900>{number = 3, name = (null)}
bg 2 - <NSThread: 0x60000006fb80>{number = 1, name = main}
bg 3 - <NSThread: 0x600000268900>{number = 3, name = (null)}
main 1 - <NSThread: 0x60000006fb80>{number = 1, name = main}
main 3 - <NSThread: 0x60000006fb80>{number = 1, name = main}
舞台裏の理論は何だろうかnとプライベートキューはシリアルですか?