1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Проблема вот в чем : в функциях win32api CreateThread и _beginthreadex как параметр функции-потока передается указатель на void. Для bcw 5.5 подойдет любой параметр,а вот gcc выдает ошибку о неправильном использовании void-параметра. Как обойти?переносить код на borland c++ 5.5 времени нет, да и исправлять всё там муторно.. в VS08 этот проект так же не переноситься..как быть?
как же я бы сам смог до такого дойти, с нашими институтскими методичками
У тебя ж выход в Сеть есть? А в MSDN явно сказано, что третий параметр у CreateThread Function имеет тип LPTHREAD_START_ROUTINE... А если компилятор не может привести типы сам, надо попытаться ему помочь, в большинстве случаев это срабатывает.
Цитата
почему же 4 вызова происходят в один момент времени, а последний, 5ый, можно сказать "после завершения программы"
То есть, ты на 100% уверен, что запаздывает именно пятый поток? Мне очень жаль тебя огорчать, конечно, но это не так... Смотри:
Так какой поток запаздывает, говоришь? А все потому, что передал-то я адрес переменной, но чему она равна в тот момент, когда начинает работать поток, и существует ли она вообще? При всем этом я и получать должен адрес, а не что-то иное... Кстати, еще одно: поток не завершается потому, что для гарантированного завершения функция prf должна вернуть значение. У тебя это невозможно, поскольку описана функция как void, а ведь MSDN предупреждает:
Цитата
Do not declare this callback function with a void return type and cast the function pointer to LPTHREAD_START_ROUTINE when creating the thread. Code that does this is common, but it can crash on 64-bit Windows.