-
1) 将线程信息添加到程序中,以查看哪个线程更改了 done 字段。
class program
static void main(string args)"主线程 id:", ;
threadtest tt = new threadtest();
new thread(;;
class threadtest
public static bool done;
public void go()
int tid = ;
执行 go 的线程是:", tid);
if (!done)
修改 done 的线程如下所示:",tid);
done = true;
done");
2)上面的程序有多个线程发送到done字段"争"因此,将有 1 或 2 个完成的输出。 当输入 2 个完成时,就发生了比赛。 比赛与完成是否静态无关。
-
第一个问题,new thread(; //go1;//go2
上面两个 go1 和 go2,先执行的不一定可行,两者都是可能的(由 C 的多线程性质决定)。
无论先执行哪一个,tt 对象的 done 都会变为 true,第二个不会输出。
第二个问题,如果 done 是静态的,那么它仍然只有一个输出,因为第一个已经修改为 done 为 true。
-
如果只是访问,就不会有死锁。 如果需要使用锁,可以写两个方法,一个专门设置它的值,一个专门取它的值,方法会在内部锁定同一个对象,这样就不会出现死锁问题。 除此之外。
我不知道netmf中是否有锁,但这就是它的样子。
-
最简单的方法是锁定此变量,或锁定函数方法,使其一次只能由一个线程调用。
但这是以牺牲效率为代价的,所以首先你必须考虑以下问题:
1.这个变量值会被其他线程更改吗?
2.您是否必须在其他线程中更改此变量?
如果它是负数,请考虑使用临时变量或局部变量而不是原始变量,如果它是正数,则考虑锁定。
-
公共变量(据我所知,它们是全局变量)必然会产生影响,因此,如果您不想这样做,请在方法中将公共变量更改为局部变量。
-
在方法中进行变量访问时,将添加锁。 只需使用锁,或根据实际情况使用读/写锁即可。
然后建议将变量(应该是字段)设置为私有。 如果需要外部访问,请使用只读属性来访问它。
-
这取决于你的方法是否与全局变量或对象有关,如果是,那么结果肯定是错的,如果没有全局变量和对象,只是处理结果的返回,那么就没有问题。
-
如果 f() 只是一个简单的 c 方法,他就不会误解输入输出对应关系。
但是你的 f() 是一个设备操作方法。 您是否会犯错取决于设备和设备驱动程序,您需要与其他制造商联系。
如果设备无法区分输入和输出对,则只需将其锁定即可。
-
不,计算机使用时序来完成数据处理,但是如果 f() 方法处理时间较长,就会造成线程滞后!
-
这取决于此方法中是否对公共静态变量进行了任何更改。
如果公共静态变量未被修改,则不会修改。
-
如果 f 是向终端发送命令的方法,那么这里是否会出现错误与仪器非常相关。
这里的核心问题是线程 A 先发起请求,然后开始等待 f() 给出返回,仪器处理线程 A 发送的请求,线程 A 处于等待阶段,所以如果线程 B 此时发出请求,线程 B 发送给 f() 的请求会影响线程 A 的结果吗?
这取决于仪器是否支持多请求并发。
如果是这样,则可以使用此异步请求方法。
如果没有,则需要线程同步。
-
添加互斥锁的目的是为了解决多个线程访问同一资源导致的意外异常,那么你现在是一个线程只负责插入,另一个线程负责查询和删除,如果查询和删除与插入无关,那么显然就不需要线程锁了, 如果询问隐患,那么由于多线程或多用户的原因,频繁操作几个相关表可能会导致数据库表死锁。
-
如果您使用的队列不是线程安全的,则存在一个陷阱。
如果你的。 .NET Framework>=4 系统提供线程安全队列。
-
套接字连接是独立的,无法接收 ababab。 服务器为来自每个客户端的请求建立一个单独的通道,而不管其他客户端如何。
-
全局变量是参考类型吗? 如果使用引用类型,则需要添加锁以防止并发访问。
方法:定义一个空对象以锁定该对象。
private static object _syncobject=new object();
锁被添加到需要访问的全局变量中。
private object _myvariable = new object();
public object myvariable}}
-
当然,这没有问题。 当启用两个线程时,将分别调用两个子线程,这意味着每个线程都有一个这样的方法。 从理论上讲,是没有问题的,如果ABC方法设计用于公共资源或**,那么可能需要注意处理它。
-
如果你不共享资源也没关系,例如,如果你的 ABC 只是做了一个 100 个循环退出,那就没问题了,但如果 ABC 使用系统资源,你必须控制同步操作。
-
建议分享这些部分。
使用互斥锁进行保护。
避免同时使用方法 abc()