Передача нескольких аргументов потоку на C (pthread_create)

Я пытаюсь передать 2 целых числа без знака во вновь созданный поток в C (используя pthread_create ()), но ни массив из 2 целых чисел, ни структура, похоже, не работают.

// In my socket file

struct dimension {
    unsigned int width;
    unsigned int height;
};

unsigned int width, height;

void setUpSocket(void* dimension) {

    struct dimension* dim = (struct dimension*) dimension;

    width = dim->width;
    height = dim->height;

    printf("\n\nWidth: %d, Height: %d\n\n", width, height);

}

// In main.cpp

// Pass a struct in pthread_create
struct dimension dim;
dim.width = w;
dim.height = h;

pthread_create(&ph, &attr, (void * (*)(void *)) setUpSocket, (void *) &dim);

Перед вызовом pthread_create значения dim.width и dim.height верны. В моем файле сокета задана только ширина, высота - 0, и я не понимаю почему.

Кто-нибудь знает, что не так, пожалуйста, и как это исправить?

Большое спасибо.

6
задан Jary316 29 June 2011 в 16:57
поделиться