Аргумент, передаваемый в нить, привести к типу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

У меня в цикле создаются нити:
...while(TRUE){     
 
        if(d == 10) break;
 
        DWORD WINAPI client(void *arg);
        DWORD client_id;
        HANDLE hclient;
        
        hclient = CreateThread(NULL, 0, client, (void *)d, 0, &client_id);      
 
        d++;
        Sleep(1000);
    }...
 
...DWORD WINAPI client(void *arg){
    WaitForSingleObject(hmtx, INFINITE);
    printf("clientCreated\n");
    ReleaseSemaphore(hmtx, 1, NULL);
    Sleep(1000);
}...
Я передаю аргумент (void *)d клиенту. Как его преобразовать в int (и вообще в любой другой тип)? Мне он понадобится для установления позиции курсора на экране.

Решение задачи: «Аргумент, передаваемый в нить, привести к типу»

textual
Листинг программы
int *a = (int*)arg;

Объяснение кода листинга программы

  1. В коде идет объявление переменной a типа int* (указатель на целочисленную переменную).
  2. Значение переменной a инициализируется с помощью оператора (int*).
  3. В качестве аргумента для приведения типа используется переменная arg.
  4. Приведение типа выполняется с помощью оператора =.
  5. Значение переменной a после приведения типа будет представлять собой указатель на целочисленную переменную, которая была передана в функцию в качестве аргумента.

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы