我们可以从差异线程安全地读取/更新布尔值吗?我的意思是操作原子?我想知道所有平台(android,ios,macos,linux,windows)
我想要做的是使用布尔var作为标志。类似的东西:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { DataTableDemo1 } from './demo1/data-table-demo1'
import { DataTableDemo3 } from './demo3/data-table-demo3'
import { DataTableModule } from 'angular-4-data-table';
@NgModule({
declarations: [
AppComponent,
DataTableDemo1,
DataTableDemo3,
FooComponent
],
imports: [
BrowserModule,
DataTableModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
答案 0 :(得分:4)
该代码在任何平台上都不是原子的。
您需要使用其中一个原子内在函数,如AtomicCmpExchange
或等效TInterlocked.CompareExchange
。请注意,这些操作数在32位或64位操作数上运行,因此您可能需要切换到LongBool
。
尽管如此,原子操作可能不是解决问题的正确方法。也许正确的解决方案是使用同步原语。鉴于这个问题,我们几乎不可能判断出这个问题。我想说的是,我刚刚回答了这个问题,“这是原子的”。我绝对不是说你问题的解决方案是原子比较/交换功能。