亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在每個線程的PHP擴展中封裝全局變量?

如何在每個線程的PHP擴展中封裝全局變量?

PHP
慕工程0101907 2021-06-01 16:59:03
我開發了一些 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 變量。因為它可能會被覆蓋并且我的腳本崩潰了。作為變體,我可以在函數內部定義變量,并將此變量從定義變量的函數傳遞給另一個函數。但是在某些情況下,當多個函數必須訪問某個變量時,我無法做到這一點。有人可以告訴我一個好的做法嗎?
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

使全局變量 thread-local 正在做:

_Thread_local int test_var; /* for C11 or higher */

對于其他版本的 C,這可能會:

thread_local int test_var;

或這個

__thread int test_var;


查看完整回答
反對 回復 2021-06-04
  • 1 回答
  • 0 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號