我開發了一些 PHP 擴展。此擴展必須與 pthread 一起使用。我遇到了一個問題,因為全局變量,全局聲明(在 C 代碼的頂部),它們可以從每個 PHP 線程訪問。例如,我們有用 C 語言編寫的簡單 PHP 擴展代碼:#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。這意味著我必須非常小心地使用全局 C 變量。因為它可能會被覆蓋并且我的腳本崩潰了。作為變體,我可以在函數內部定義變量,并將此變量從定義變量的函數傳遞給另一個函數。但是在某些情況下,當多個函數必須訪問某個變量時,我無法做到這一點。有人可以告訴我一個好的做法嗎?
如何在每個線程的PHP擴展中封裝全局變量?
慕工程0101907
2021-06-01 16:59:03