我使用了用C编写的第三个侧库。它被设计为以单例形式运行,并包含大量静态函数,变量和用户界面。我需要能够使用多个实例运行它,以便它们不会相互干扰。例如,如果一个线程设置静态变量
editabltText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable)
{
}
});
第二个线程仍然看到index = 0。 我不确定是否有可能实施。
答案 0 :(得分:0)
你所要求的是不可能的。
为了教学目的,我们假设您使用的是unix机器。
任何进程(例如可执行文件./a.out)都具有以下内存布局:
当你创建一个线程时,它共享所有这些内存段除了 Stack 部分(基本上每个线程都获得一个新的堆栈指针)。
此外,静态变量存储在 Data 段(在您的情况下为初始化数据段)中,这是一个共享内存段,因此当一个线程更改它时,它也会更改所有其他线程
所以线程只有自己本地的以下内容
堆栈指针
程序计数器
寄存器
图片来源:llnl.gov
希望它有所帮助: - )。