【发布时间】:2017-04-10 05:54:09
【问题描述】:
我开始学习一些统一性,我有一个关于多线程的快速问题。
我有一个包含数据模型类实例的类。该类的主要功能是异步获取远程资源并更新数据模型类。然后在更新函数中读取数据模型类并将其写入游戏对象中的某些文本。
无论如何,我担心它可能会导致一些与多线程相关的问题,因为我对类的异步更新可能与导致竞争条件的更新函数同时运行。我是否必须将对类的访问封装在互斥锁中?
class Data {
public int Number { get; set; }
public string Name { get; set; }
}
class Network : MonoBehaviour {
private Data d;
public void Start() {
// setting up handler to async fetch data and call provided callback
Networking.GetData(s => ParsePayload(s));
}
private void ParsePayload(string payload) {
d = JsonConvert.DeserializeObject<Data>(payload);
}
public void Update() {
var label = GameObject.Find("textObject").GetComponent<Text>();
label.Text = d.Name;
}
}
那么我是对的还是统一自己处理这个问题?
感谢任何建议!
【问题讨论】:
-
如果不发布您的代码,您得到的任何答案都可能对您没有用处。至少,试着展示你在做什么
-
@Programmer 更新了我的问题...
-
你在哪里更新类,线程代码在哪里。这是缺失的。如果你有这两个,这里有人可以帮你回答这个问题。
-
@programmer 它没有丢失.... ParsePayload()
-
您只回答了部分缺失的问题。
ParsePayload被传递给另一个Thread进行回调,当结果可用时,Thread将调用它。现在,调用ParsePayload的线程代码在哪里?它可以在任何地方访问Data d吗?
标签: c# .net multithreading unity3d mono