Любой блок, вычисленный в главной очереди, будет оцениваться в потоке, с которым он связан, поэтому вы можете получить идентификатор этого потока, спросив, в каком потоке оценивается такой блок:
#import <mach/mach_init.h>
__block mach_port_t mainThreadID;
dispatch_async(dispatch_get_main_queue(), ^{
mainThreadID = mach_thread_self();
});
(A mach_port_t
на самом деле просто без знака int.)