zw_7627 发表于 2019-7-9 01:05:44

c#多线程中,一个正在运行的线程如何保证另一个线程也执行其中一部分?

如题,请提供下解题思路。

XA144F 发表于 2019-7-9 08:28:50

说实话,没看懂你想表达的意思……你是说代码共用,还是同一个代码创建新的线程?

zyqcome 发表于 2019-7-9 09:25:41

多线程都有线程等待的,停那等另一个线程操作

天下乌鸦一般黑 发表于 2019-7-9 09:28:48

多线程了都。一个等另外一个会不会有点低效率啊。~

ANHOME 发表于 2019-7-9 09:31:55

线程之间,实现互相之间通信,不就好咯。

jarodzz 发表于 2019-7-9 11:17:36

最金剛好有看到...task.yield 看看是不是你要的

catvevs 发表于 2019-7-9 11:56:04

这个可能要牵扯资源共享问题,比如用LOCK 在线程竞争的时候要锁定一段代码,在出现竞争的时候保证只有一个线程进入这段代码在运行。

openmcu666 发表于 2019-7-9 11:57:25

应用是资源共享的问题吧

zhw950 发表于 2019-7-9 13:41:26

锁住共享资源,或者每个线程拷贝一份资源。

norman33 发表于 2019-7-9 16:55:11

楼主,不同线程是不会交叉的,你是不是有变量要等某一线程处理完再用另外一个线程处理?

zw_7627 发表于 2019-7-9 22:58:17

XA144F 发表于 2019-7-9 08:28
说实话,没看懂你想表达的意思……你是说代码共用,还是同一个代码创建新的线程? ...

一个发数据线程,需要在另一个接收线程里执行一个event.set()。但执行发送线程的时候,接收线程没有运行。。。不知道是什么原因

zw_7627 发表于 2019-7-9 22:59:30

zyqcome 发表于 2019-7-9 09:25
多线程都有线程等待的,停那等另一个线程操作

是waitone吗?

zyqcome 发表于 2019-7-9 23:06:12

zw_7627 发表于 2019-7-9 22:59
是waitone吗?

要相信网络

https://www.cnblogs.com/JoeSnail/p/7155815.html

MSDN应该也有不少的实现,

我不怎么喜欢多线程,调试起来很麻烦,多线程里动界面的控件就更麻烦,要不试一试转化为事件处理

zw_7627 发表于 2019-7-9 23:08:07

catvevs 发表于 2019-7-9 11:56
这个可能要牵扯资源共享问题,比如用LOCK 在线程竞争的时候要锁定一段代码,在出现竞争的时候保证只有一个 ...

lock只是锁定在运行的线程中一部分代码吧。比如下面的代码中,如何执行到线程2的event.set();
public void 线程1()
{
        lock(thisLock)
        {

        }
}

public void 线程2()
{
        event.set();
}

catvevs 发表于 2019-7-10 09:51:39

查一下 ManualResetEvent。   1线程Reset(),然后 WaitOne(),关门等待。2线程Set(),开这道门 ,1线程执行WaitOne()后面的代码。

zw_7627 发表于 2019-7-11 00:38:27

catvevs 发表于 2019-7-10 09:51
查一下 ManualResetEvent。   1线程Reset(),然后 WaitOne(),关门等待。2线程Set(),开这道门 ,1线程执 ...

我用的是AutoResetEvent,故障依旧。
页: [1]
查看完整版本: c#多线程中,一个正在运行的线程如何保证另一个线程也执行其中一部分?