struct MyData
{
public string TAG_ID; //数据
public string val; //数据
public string time; //延迟时间
}
public string LinkageFunction(string tagID) //返回 0:联动失败; 1:联动成功!
{
DataSet ds_SCENE = //取的数据集
if (ds_SCENE != null && ds_SCENE.Tables.Count > 0 && ds_SCENE.Tables[0].Rows.Count > 0)
{
int coun = ds_SCENE.Tables[0].Rows.Count;
for (int i = 0; i < coun; i++)
{
MyData de = new MyData();
de.TAG_ID = ds_SCENE.Tables[0].Rows[i]["TAG_ID"].ToString();
de.val = ds_SCENE.Tables[0].Rows[i]["LINK_ROLE_VAL"].ToString();
de.time = ds_SCENE.Tables[0].Rows[i]["LINK_ROLE_TIME"].ToString();
ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), de); //线程池
}
}
private void JanitorMethod(object ob)
{
MyData de_All = (MyData)ob;
Thread.Sleep(Convert.ToInt32(de_All.time));
try
{
//执行操作 }
catch (Exception err)
{
throw err;
}
}
1,我这代码是否存在安全问题?
2,若需要上 线程锁?我该锁哪里? lock(de_All)?lock(ob)或其他位置?
3,死锁问题会存在?
初入线程安全,,,谢谢解答!
原帖
http://topic.csdn.net/u/20100324/17/0b293992-7368-43e6-803b-2ba11c92d522.html