Если вы объявите их как __declspec(thread)
там, где они ранее были глобальными, то вы изменили смысл программы, а также ее характеристики производительности.
Когда переменная была глобальной, была однаСкопируйте, что каждый поток упоминается.Как локальный поток, каждый отдельный поток имеет свою собственную переменную, и изменения в локальной переменной этого потока видны только в этом потоке.
Если вы действительно хотите локальный поток, то это правда, что чтение и запись локальных переменных потокадороже, чем обычные переменные.Всякий раз, когда вы сталкиваетесь с операцией, выполнение которой занимает много времени, лучшее решение - вообще прекратить это делать.В этом случае есть два очевидных способа сделать это:
- Передать переменную как параметр, чтобы она находилась в стеке.Быстрый доступ к переменным стека.
- Если у вас есть функции, которые много читают и записывают эту переменную, а затем возьмите ее копию в начале функции (в локальную переменную), поработайте над этой локальной переменной,и затем по возвращении запишите его обратно в локальный поток.
Из этих вариантов обычно предпочтительнее первый.Вариант 2 имеет большой недостаток, который не может быть легко применен, если функция вызывает другую функцию, которая использует эту переменную.
Вариант 1 в основном сводится к тому, чтобы не использовать глобальные переменные (локальные потоки являются формой глобальных).
Конечно, все это может быть очень широким, потому что вы так мало сказали о том, что на самом деле делает ваш код.Если вы хотите решить проблему с производительностью, сначала вы должны определить, где она находится, а это значит, что вам нужно измерить.