我想從Objective-C代碼轉換爲Swift,如下所示;如何在Swift中聲明volatile變量
int sum = 0;
x = 1;
for (int i = 0; i < 100; i++) {
sum += x;
}
x可從其他線程訪問。所以x被聲明爲一個volatile變量。
volatile int x;
我該如何在Swift中編寫這段代碼?
我想從Objective-C代碼轉換爲Swift,如下所示;如何在Swift中聲明volatile變量
int sum = 0;
x = 1;
for (int i = 0; i < 100; i++) {
sum += x;
}
x可從其他線程訪問。所以x被聲明爲一個volatile變量。
volatile int x;
我該如何在Swift中編寫這段代碼?
在Swift中,您可以訪問更多有效的方法來表達值的全局同步性 - 尤其是在類型級別 - 而不是volatile關鍵字。例如,您可以選擇鎖來同步讀取和寫入訪問變量。您可以選擇使用MVar來指示變量在多個線程中應只有1個可能的有效狀態。或者你可能選擇不在Swift中表達問題。由於該語言會從導入的代碼中去除易失性限定符,似乎希望利用此功能的應用程序應該堅持使用C或Objective-C,並向任何感興趣的Swift代碼提供接口。
你可以請看看這個問題http://stackoverflow.com/questions/34601888/does-every-pure-function-should-have-fixed-points 並澄清你的想法?提前致謝。 – MainstreamDeveloper00
'volatile'不會讓一個變量可以從其他線程訪問。它用來表示一個變量的行爲像一個硬件寄存器。改爲使用互斥鎖。 – Potatoswatter
這個問題似乎是題外話,因爲原來的前提是不正確的,因爲揮發性不像你所說的那樣做,所以我們不能轉換它 – Mark
對不起,我的壞僞代碼。我知道Potatoswatter說了些什麼。 在移植我的Objective-C代碼時,需要volatile,因爲其他線程可能更新變量x並且引用需要指示最新值。 –