Skip to content

Instantly share code, notes, and snippets.

@pjrobertson
Created February 12, 2013 20:51
Show Gist options
  • Save pjrobertson/4773263 to your computer and use it in GitHub Desktop.
Save pjrobertson/4773263 to your computer and use it in GitHub Desktop.
Test app for whether or not -[NSFileManager defaultManager] returns the same instance on different thread (it does)
//
// main.m
// Threading
//
// Created by Patrick Robertson on 12/02/2013.
// Copyright (c) 2013 Patrick Robertson. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSFileManager *fm1 = [NSFileManager defaultManager];
NSLog(@"thread %@: %p",[NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_current_queue())],fm1);
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSFileManager *fm2 = [NSFileManager defaultManager];
NSLog(@"thread %@: %p",[NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_current_queue())],fm2);
});
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSFileManager *fm3 = [NSFileManager defaultManager];
NSLog(@"thread %@: %p",[NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_current_queue())],fm3);
});
dispatch_queue_t concurrent_queue = dispatch_queue_create("concurrent queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(concurrent_queue, ^{
NSFileManager *fm4 = [NSFileManager defaultManager];
NSLog(@"thread %@: %p",[NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_current_queue())],fm4);
});
dispatch_queue_t serial_queue = dispatch_queue_create("serial queue", DISPATCH_QUEUE_SERIAL);
dispatch_sync(serial_queue, ^{
NSFileManager *fm5 = [NSFileManager defaultManager];
NSLog(@"thread %@: %p",[NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_current_queue())],fm5);
});
}
return 0;
}
@pjrobertson
Copy link
Author

2013-02-12 20:48:49.484 Threading[12943:303] thread com.apple.main-thread: 0x1001081b0
2013-02-12 20:48:49.486 Threading[12943:303] thread com.apple.root.default-priority: 0x1001081b0
2013-02-12 20:48:49.488 Threading[12943:303] thread com.apple.root.background-priority: 0x1001081b0
2013-02-12 20:48:49.488 Threading[12943:303] thread conc: 0x1001081b0
2013-02-12 20:48:49.489 Threading[12943:303] thread serial: 0x1001081b0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment