Является ли функция, содержащая локальную переменную потока, повторно входящей?

Возьмите следующий код, используя thread_local переменная в качестве примера:

void func() {
thread_local int a;
......
}

В соответствии с Википедия, Я знаю, что это thread_safety функция. Но мы должны также назвать это входящий угол функционировать?

-2

Решение

Поток безопасности! = Повторный вход.

Функция повторного входа может быть прервана (скажем, обработчиком прерывания или сигнала), а затем повторно введена этим обработчиком сигнала; это происходит в одном потоке.

Мы не сможем сказать, func() является реентерабельным или не только из-за того, что он использует одну локальную переменную потока.

Короче говоря: если функция обращается к глобальным данным неатомарным способом (или вызывает функцию, которая делает это), то она не реентерабельна. Это вовсе не обязательно связано с многопоточностью.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]