Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Deep_27
0 / 0 / 1
Регистрация: 11.12.2013
Сообщений: 28
1

Аргумент, передаваемый в нить, привести к типу

23.05.2015, 11:08. Просмотров 318. Ответов 2
Метки нет (Все метки)

У меня в цикле создаются нити:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...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 (и вообще в любой другой тип)? Мне он понадобится для установления позиции курсора на экране.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2015, 11:08
Ответы с готовыми решениями:

Фильтрация Where не работает корректно, если передаваемый в метод аргумент parentId равен null
Никак не могу понять, почему фильтрация Where не работает корректно, если передаваемый в метод...

Привести число к строковому типу
как числа типа int привести у типу string, например 12 -> "12", 30 -> "30" ?

Написати функцію, яка визначає до якого типу належить її аргумент.
Написати функцію, яка визначає до якого типу належить її аргумент.

Привести объект к типу другого объекта
Нужно определить тип объекта1 и привести второй объект2 к типу объекта1 что-то вроде: Object...

Привести переменную к типу другой переменной
Требуется реализовать явное приведение переменной к типу, заданному значением переменной...

2
VTsaregorodtsev
606 / 563 / 85
Регистрация: 19.02.2010
Сообщений: 2,055
24.05.2015, 23:18 2
Не сработает код - Вы передаёте адрес переменной, которую потом инкрементируете. После завершения цикла создания потоков все потоки по адресу этой переменной возьмут одно и то же значение.

Т.е. уникальные для каждого потока вещи - складывайте в отдельную переменную (или структуру), адрес которой и передавайте.

А взять инт по некоторому войдовому указателю zzz - просто: ххх=*(int *)zzz, или даже не присваивать локальной переменной ххх, а напрямую использовать в выражении или вызове какой-то функции.
1
Deep_27
0 / 0 / 1
Регистрация: 11.12.2013
Сообщений: 28
25.05.2015, 17:54  [ТС] 3
Спасибо, насчет d понял. Отправляю нити (void*)0, и привожу, как вы посоветовали
C
1
int a = *(int *)arg;
но программа просто вылетает.

Добавлено через 45 минут
Все, разобрался
C
1
int *a = (int*)arg;
Все работает, правда предупреждениями кидается
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2015, 17:54

Привести обратно к типу унаследованному от Ienumerable<T>
Есть class Items : Ienumerable&lt;Item&gt; делаю Items.Where(i =&gt; i.s == &quot;&quot;) И возвращается...

Как привести переменную к нужному типу?
Вот фрагмент кода: String otvet = xmlRazbor.razbor(workXML); ...

Как привести к нужному мне типу
У меня есть класс А, в котором есть поле IMachineInfo mInfo. Я создаю класс Pump, который extends...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru