我開發(fā)了一些 PHP 擴(kuò)展。此擴(kuò)展必須與 pthread 一起使用。我遇到了一個(gè)問題,因?yàn)槿肿兞?,全局聲明(?C 代碼的頂部),它們可以從每個(gè) PHP 線程訪問。例如,我們有用 C 語言編寫的簡單 PHP 擴(kuò)展代碼:#include <php.h>int test_var;PHP_FUNCTION(set_var) { test_var = 123;}PHP_FUNCTION(print_var) { printf("%d", test_var);}如果我們在第一個(gè) PHP 線程中運(yùn)行以下代碼:set_var();然后在第二個(gè)線程中運(yùn)行以下 PHP 代碼:print_var();第二個(gè)線程的輸出將是 123。這意味著我必須非常小心地使用全局 C 變量。因?yàn)樗赡軙桓采w并且我的腳本崩潰了。作為變體,我可以在函數(shù)內(nèi)部定義變量,并將此變量從定義變量的函數(shù)傳遞給另一個(gè)函數(shù)。但是在某些情況下,當(dāng)多個(gè)函數(shù)必須訪問某個(gè)變量時(shí),我無法做到這一點(diǎn)。有人可以告訴我一個(gè)好的做法嗎?
如何在每個(gè)線程的PHP擴(kuò)展中封裝全局變量?
慕工程0101907
2021-06-01 16:59:03