load-parallel0.m   [plain text]


#ifndef N
#error -DN=n missing
#endif

#import <objc/objc-api.h>
#include <stdio.h>
#include <sched.h>
#include <unistd.h>
#include <libkern/OSAtomic.h>
extern int state;

#define CLASS0(n,nn)                                                    \
    OBJC_ROOT_CLASS                                                     \
    @interface C_##n##_##nn @end                                        \
    @implementation C_##n##_##nn                                        \
    +(void)load { OSAtomicIncrement32(&state); usleep(10); }            \
    @end

#define CLASS(n,nn) CLASS0(n,nn)

CLASS(a,N)
CLASS(b,N)
CLASS(c,N)
CLASS(d,N)
CLASS(e,N)
CLASS(f,N)
CLASS(g,N)
CLASS(h,N)
CLASS(i,N)
CLASS(j,N)
CLASS(k,N)
CLASS(l,N)
CLASS(m,N)
CLASS(n,N)
CLASS(o,N)
CLASS(p,N)
CLASS(q,N)
CLASS(r,N)
CLASS(s,N)
CLASS(t,N)
CLASS(u,N)
CLASS(v,N)
CLASS(w,N)
CLASS(x,N)
CLASS(y,N)
CLASS(z,N)