同步线程

已加入
2016年5月13日
留言内容
14
编程经验
1-3
我有一个附加100的线程"_"到一个文件,另一个100"-"到同一个文件中。任何想法如何同步它们以获得_-_-_-等输出。我想解决方案在C#中将是相似的
C#:
Imports System.ThreadingImports System.IO


Module Module1
    Dim NesneMutex As New Mutex
    Dim fs As New FileStream("C:\\Data\\threadTesti.dat", FileMode.Append, FileAccess.Write)
    Sub alt()
        For i = 0 To 100
            fs.WriteByte(Asc("_"))
        Next
    End Sub


    Sub tire()
        For i = 0 To 100
            fs.WriteByte(Asc("-"))
        Next
    End Sub


    Sub Main()
        Dim t1 As New Thread(New ThreadStart(AddressOf alt))
        Dim t2 As New Thread(New ThreadStart(AddressOf tire))
        t1.Start()
        t2.Start()
        Console.ReadKey()
    End Sub
End Module
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,568
地点
悉尼,澳大利亚
编程经验
10+
这是您真正想要做的事情,还是只是学习如何同步线程的一种方式?如果是后者,那么似乎您只是在要求我们为您完成工作。您在研究中发现了什么,并且在尝试实施时发生了什么?
 
已加入
2016年5月13日
留言内容
14
编程经验
1-3
我正在学习vb.net考试,并且其中1个主题是线程。我试图徒劳地解决许多问题,希望获得提示或看到这一解决方案将帮助我理解和解决其他线程问题。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,568
地点
悉尼,澳大利亚
编程经验
10+
而且我真的看不到您的回覆对您有帮助

然后,您就不会很努力了。您是否只是不想得到任何答复,还是想知道为什么您没有得到任何答复?如果这是您想要在真实应用程序中执行的操作,那么我建议您不要这样做,因为它不是任何操作。如果这是为了学习而设计的示例,那就不一样了,但是那里已经有很多关于线程同步的信息,因此您应该做的是首先自己研究,使用这些信息,然后在尝试的地方发布这些信息。不行否则,您只是在要求我们为您完成工作。没有禁止您这样做的规则,但是许多人不喜欢被这样的优势所吸引,而是期望您首先做出努力。您可能会遇到愿意准备为您编写代码的人,但是如果您不这样做,那么您将不知道为什么没有人告诉您。也许不要那么敏感,接受批评是正常的事情。我们都做错了事,所以我们都应该期待一次又一次地受到批评。
 
已加入
2016年5月13日
留言内容
14
编程经验
1-3
然后,您就不会很努力了。您是否只是不想得到任何答复,还是想知道为什么您没有得到任何答复?如果这是您想要在真实应用程序中执行的操作,那么我建议您不要这样做,因为它不是任何操作。如果这是为了学习而设计的示例,那就不一样了,但是那里已经有很多关于线程同步的信息,因此您应该做的是首先自己研究,使用这些信息,然后在尝试的地方发布这些信息。不行否则,您只是在要求我们为您完成工作。没有禁止您这样做的规则,但是许多人不喜欢被这样的优势所吸引,而是期望您首先做出努力。您可能会遇到愿意准备为您编写代码的人,但是如果您不这样做,那么您将不知道为什么没有人告诉您。也许不要那么敏感,接受批评是正常的事情。我们都做错了事,所以我们都应该期待一次又一次地受到批评。

您为什么认为我没有做任何研究?我发现的几乎所有内容都与在工作时阻止其他线程有关。我为这个问题和其他几个问题而苦苦挣扎,但无法解决。我在这里寻求帮助,因为我想学习。仅给出提示并不能神奇地解决我的所有问题,但至少可以帮助我理解线程同步。顺便说一下,我之所以回应您的批评,是因为许多程序员认为像我这样的初学者没有付出任何努力。相信我,如果我发现任何对我的研究有用的东西,我永远都不会在这里发布。
至少感谢您试图了解我
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,568
地点
悉尼,澳大利亚
编程经验
10+
你为什么认为我没有做任何研究?
我不。我只能按照自己所看到的去做,而看不到任何实现任何尝试的尝试。
我发现的几乎所有内容都与在工作时阻止其他线程有关。
这正是您要在此处执行的操作。一个线程执行其工作,然后被阻塞,而另一个线程执行其工作,反之亦然。

您的代码中已经有一个Mutex。您是否阅读过Mutex类的文档?它包含一个代码示例。它显示了如何强制多个线程一次执行一个操作。将其应用于一次执行一个操作的两个线程并不需要花很多时间。
 
已加入
2016年5月13日
留言内容
14
编程经验
1-3
我不。我只能按照自己所看到的去做,而看不到任何实现任何尝试的尝试。

这正是您要在此处执行的操作。一个线程执行其工作,然后被阻塞,而另一个线程执行其工作,反之亦然。

您的代码中已经有一个Mutex。您是否阅读过Mutex类的文档?它包含一个代码示例。它显示了如何强制多个线程一次执行一个操作。将其应用于一次执行一个操作的两个线程并不需要花很多时间。



我已经尝试过使用互斥锁,同步锁和监视器,然后再在此处发布,但是我只能暂停第一个线程并完成第二个线程。我猜是因为这种多线程仍然使我感到困惑。为了发布更干净的代码,我在发布之前删除了所有这些内容。也许这就是为什么您认为我只是很懒惰,我认为这不是您在来这里之前就知道自己所处的情况所应该做出的假设。

我也认为这篇文章是更广泛研究的一部分。就像我之前说的,我的目标不仅是解决这个问题,而且还将其用作线程同步的示例
 
Last edited:

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
帖子1中的代码是VB.Net,但这是一个C#论坛。我建议 Visual Basic .NET论坛 如果您正在使用VB.Net开发。

顺便说一句,我的建议是使用两个AutoResetEvent对象。每个线程在写入一个线程向另一线程发出信号后,都会等待自己的AutoResetEvent,反之亦然。
 
最佳 底部