如何使用线程计算不同输出的确切数量

Posted

技术标签:

【中文标题】如何使用线程计算不同输出的确切数量【英文标题】:How can one calculate the exact number of different outputs using threads 【发布时间】:2022-01-04 18:44:55 【问题描述】:

假设我有以下功能:

所以如果我运行 3 个不同的线程,它们的工作方式如下: 线程 1 运行 f1,线程 2 运行 f2,线程 3 运行 f3

如何计算不同输出的最大数量? (您可以测试上下文切换的所有可能组合,但这太过分了)

我发现了 12 种可能的结果: 12,10,0,20,21,6,5,1,16,11,22 那么,如何知道最多有 12 个不同的输出呢?

【问题讨论】:

请不要显示代码图片。 【参考方案1】:

假设v 是全局性的,您就有了数据竞争,这是未定义的行为。

您的程序可能会崩溃,或输出任何数字(不仅仅是您列出的 12 个)。如果这是一个家庭作业问题,那么提出这个问题的人根本不知道自己在做什么。

要了解可能发生的情况,请阅读 this 和 this。

【讨论】:

我目前正在学习“操作系统”课程,很遗憾这是我的一篇论文,很遗憾听到我的教授不知道他在做什么:(,谢谢你的帮助!

以上是关于如何使用线程计算不同输出的确切数量的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Diesel 计算数组列中不同元素的数量?

如何在圆和矩形上获得确切数量的笔划破折号?

在 C# 中,如何使用反射计算表达式主体输出函数中包含的属性数量?

如何使用 OpenMP 将每个线程的输出返回到数组中?

如何找出 YouTube 上的确切关注者数量?

如何找到满足条件的数字的确切数量? [复制]