Привет, All! Подскажите как... Требуется запустить 128 thread, у каждого треда почти одинаковая процедура, но писать их ручками как-то неохота. Вроде бы, очень к месту макросы типа REPT Код (ASM): k = 0 REPT 128 . . . <-- изменяющийся фрагмент, где встречается k, которое будет заменено на увеличивающееся число k =k+1 endm Имена процедур тредов ThreadProc0, ThreadProc1, ... , ThreadProc127. Как оформить процедуры тредов используя макрос REPT ? ThreadProc&k ?
По какой-то причине при использовании ThreadProc&k, препроцессор не передает само значение k, а подставляет саму букву. Решение - @CatStr (MSDN) Код (Text): .code k = 5 REPT k @CatStr(<ThreadWork_>, %k, < proc>) ; Insert your code for the thread procedure here ret @CatStr(<ThreadWork_>, %k, < endp>) k = k - 1 ENDM WinMain proc ret WinMain endp end На выходе получается: Источник: https://stackoverflow.com/questions...-a-variable-to-create-distinct-proc-functions
Спасибо всем! Результаты можно посмотреть в «Спящей сортировке» и в «Спагетти-сортировке». Еще раз спасибо!