Я разрабатываю некоторые расширения PHP. Это расширение должно работать с pthreads вместе. Я столкнулся с проблемой, потому что глобальные переменные, объявленные глобально (в верхней части кода C), доступны для каждого потока PHP. Например, у нас есть простой код расширения PHP, написанный на языке C:
#include <php.h>
int test_var;
PHP_FUNCTION(set_var) {
test_var = 123;
}
PHP_FUNCTION(print_var) {
printf("%d", test_var);
}
Если мы запустим следующий код в первом потоке PHP:
set_var();
А затем запустите следующий код PHP во втором потоке:
print_var();
Выход второго потока будет 123. Это означает, что мне нужно очень осторожно использовать глобальные переменные Си. Потому что это может быть перезаписано, и мой скрипт потерпел крах. Как вариант, я могу определить переменные внутри функций и передать эти переменные другим функциям из функций, в которых переменная была определена. Но я не могу сделать это в некоторых ситуациях, когда несколько функций должны иметь доступ к некоторой переменной. Кто-нибудь может рассказать мне хорошие практики для этого, пожалуйста?