线程同步的问题,新手勿进!
现在有两个线程,一个用于从文件中读入记录,一个用于向数据库中写入记录,他们共享一个数据,也就是sql字符串。读取线程读入记录后,改写这个sql字符串,然后写入线程执行这个sql字符串,将数据写入,再将sql字符串置为空。现在的问题是怎样确保两个线程同步,不至于在写入线程将数据写入之前,sql字符串已被读入线程更改?
理想的过程是这样的:
//----------------------程序开始-----------------------
Programme Start!
sql字符串 = null;
读取线程.开始();
写入线程.阻塞();
//----------------------程序开始-----------------------
//----------------------读取线程-----------------------
while(true)
{
读取线程.Read();
if(sql字符串 != null)
{
读取线程.阻塞();
}
读取线程.ReWriteSQL();
if(写入线程.阻塞 == true)
{
写入线程.继续执行();
}
}
//----------------------读取线程-----------------------
//----------------------写入线程-----------------------
while(true)
{
if(sql字符串 == null)
{
写入线程.阻塞();
}
写入线程.ReadSQL();
写入线程.重置SQL();
if(读取线程.阻塞 == true)
{
读取线程.继续执行();
}
写入线程.执行SQL();
}
//----------------------写入线程-----------------------