c#多线程中,一个正在运行的线程如何保证另一个线程也执行其中一部分?
如题,请提供下解题思路。 说实话,没看懂你想表达的意思……你是说代码共用,还是同一个代码创建新的线程? 多线程都有线程等待的,停那等另一个线程操作 多线程了都。一个等另外一个会不会有点低效率啊。~ 线程之间,实现互相之间通信,不就好咯。 最金剛好有看到...task.yield 看看是不是你要的 这个可能要牵扯资源共享问题,比如用LOCK 在线程竞争的时候要锁定一段代码,在出现竞争的时候保证只有一个线程进入这段代码在运行。 应用是资源共享的问题吧 锁住共享资源,或者每个线程拷贝一份资源。 楼主,不同线程是不会交叉的,你是不是有变量要等某一线程处理完再用另外一个线程处理? XA144F 发表于 2019-7-9 08:28说实话,没看懂你想表达的意思……你是说代码共用,还是同一个代码创建新的线程? ...
一个发数据线程,需要在另一个接收线程里执行一个event.set()。但执行发送线程的时候,接收线程没有运行。。。不知道是什么原因 zyqcome 发表于 2019-7-9 09:25
多线程都有线程等待的,停那等另一个线程操作
是waitone吗? zw_7627 发表于 2019-7-9 22:59
是waitone吗?
要相信网络
https://www.cnblogs.com/JoeSnail/p/7155815.html
MSDN应该也有不少的实现,
我不怎么喜欢多线程,调试起来很麻烦,多线程里动界面的控件就更麻烦,要不试一试转化为事件处理 catvevs 发表于 2019-7-9 11:56
这个可能要牵扯资源共享问题,比如用LOCK 在线程竞争的时候要锁定一段代码,在出现竞争的时候保证只有一个 ...
lock只是锁定在运行的线程中一部分代码吧。比如下面的代码中,如何执行到线程2的event.set();
public void 线程1()
{
lock(thisLock)
{
}
}
public void 线程2()
{
event.set();
} 查一下 ManualResetEvent。 1线程Reset(),然后 WaitOne(),关门等待。2线程Set(),开这道门 ,1线程执行WaitOne()后面的代码。 catvevs 发表于 2019-7-10 09:51
查一下 ManualResetEvent。 1线程Reset(),然后 WaitOne(),关门等待。2线程Set(),开这道门 ,1线程执 ...
我用的是AutoResetEvent,故障依旧。
页:
[1]