Stocker un pointeur d'adresse dans un unsigned int en C

Est-il possible de jeter un pointeur sur un unsigned int, puis jeta un pointeur? Je suis en train de stocker le pointeur sur une struct dans un pthread_t variable, mais je n'arrive pas à le faire fonctionner. Voici quelques extraits de mon code (je suis en création d'un utilisateur au niveau de la gestion des threads de la bibliothèque). Lorsque je tente d'imprimer le tid de le thread qu'il me donne quelques ordures nombre.

Edit: Jamais l'esprit, je l'ai eu à travailler.

J'ai changé

thread = (pthread_t) currentThread;

à

*thread = (pthread_t) currentThread;

Pensé que c'était quelque chose de stupide comme ça.


Programme de Test:

pthread_t thread1;
pthread_t thread2;

pthread_create(&thread1, NULL, runner, NULL);
pthread_create(&thread2, NULL, runner, NULL);
pthread_join(&thread2, NULL);

Ma bibliothèque:

typedef struct queueItem
{
    int tid;
    ucontext_t context;

    int caller;

    struct queueItem *joiningOn;
    struct queueItem *nextContext;
} queueItem;

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)
{
    thread = (pthread_t) currentThread;
}

...

int pthread_join(pthread_t thread, void **retval)
{
    queueItem *t = (queueItem *) thread;

    if(runningContext->joiningOn != NULL) //Current thread is already waiting on another
        return EINVAL;
    if(t == NULL) //If thread to join on is invalid
        return 0;

    fprintf(stdout, "JOINEE: %d\n", t->tid); //Prints weird number

    runningContext->caller = JOIN;
    runningContext->joiningOn = t;
    swapcontext(&(runningContext->context), &scheduleContext);
}
Je ne comprends pas--vous avez défini pthread_create dans votre propre bibliothèque? Pourquoi en faire un conflit de nom avec la fonction habituelle de ce nom??
C'est un projet pour l'école.
Passons sur le fait, ai eu de travail. Édité mon post original.

OriginalL'auteur Anthony C. | 2012-04-29