无序线程问题

2023-12-12

我问过关于锁定的问题here人们回答说我的锁实现没有问题。但我发现了问题。这是相同的锁实现,我得到了奇怪的结果。我希望看到数字从 1 开始,但它是从 5 开始。示例如下。

class Program
{
    static object locker = new object();
    static void Main(string[] args)
    {
        for (int j = 0; j < 100; j++)
        {
            (new Thread(new ParameterizedThreadStart(dostuff))).Start(j);
        }
        Console.ReadKey();
    }
    static void dostuff(dynamic input)
    {
        lock (locker)
        {
            Console.WriteLine(input);
        }
    }
}

代码没问题。但是您无法保证线程的执行顺序。当我运行代码时,我得到:

0 1 3 5 2 4 6 10 9 11 7 12 8 ETC

如果您需要按指定顺序运行线程,您可以考虑使用ThreadPool.QueueUserWorkItem反而。

class Program
{
      static object locker = new object();
      static EventWaitHandle clearCount 
          =new EventWaitHandle(false, EventResetMode.ManualReset);
  static void Main(string[] args)
  {
    for (int j = 0; j < 100; j++)
    {
       ThreadPool.QueueUserWorkItem(dostuff, j);
    }
    clearCount.WaitOne();
  }
  static void dostuff(dynamic input)
  {
    lock (locker)
    {
      Console.WriteLine(input);
          if (input == 99) clearCount.Set();
     }
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无序线程问题 的相关文章

  • asp.net core / kestrel中的线程管理

    我正在解决我们已迁移到 asp net core 2 0 的 asp net 应用程序的性能 可扩展性问题 我们的应用程序作为应用程序服务托管在 azure 上 并且在任何中等流量的情况下都很容易崩溃 让我困惑的一件事是如何处理多个并发请求
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • Nashorn 与 Java 1.8 到 15 的兼容性吗?

    我需要使用 Nashorn JavaScript 引擎的软件与 Java 1 8 及以上版本兼容 如果我使用与 JDK 捆绑在一起的版本 它将无法在 Java gt 15 上运行 如果我使用独立的纳肖恩它与 Java 有没有办法保持兼容性
  • Android 缩放动画视图

    我想使用 ScaleAnimation 以编程方式不在 xml 中 将高度更改为父高度的 0 到 60 视图的宽度是恒定的 为 50px 视图为空 仅设置背景颜色 有人可以给我代码吗scaleAnim使用代码中的 ScaleAnimatio
  • Elasticsearch 无痛脚本不使用 if 条件替换嵌套对象字段值

    我刚刚开始使用 ES 仍在学习该行业的技巧 我需要替换 覆盖嵌套对象类型的字段之一 这是示例文档 name db ref ref counter ref name test1 count 1 ref name test2 count 2 r
  • 获取一个数字的 PHP 对象属性[重复]

    这个问题在这里已经有答案了 我正在尝试从解码为 PHP 对象的 JSON 数据中获取属性 这只是一个 YouTube 数据 API 请求 返回一个具有内容对象的视频对象 content gt stdClass Object 5 gt htt
  • 从我的回收器适配器的单击功能传递数据

    public void onClick View v Intent intent new Intent context notification class Bundle bundle new Bundle bundle putSerial
  • 您能否在 C# 中将一个委托的结果链接为另一个委托的输入?

    我正在寻找一种方法来链接多个代表 以便一个代表的结果成为下一个代表的输入 我试图在方程求解程序中使用它 其中部分是通过不同的方法完成的 这个想法是 当您构建方程时 程序会添加代表并按特定顺序链接它们 以便可以正确求解 如果有更好的方法来解决
  • 当向本地主机节点应用程序发出多个请求时,Google Chrome 将请求一一排队

    最近 我正在测试 Nodejs Express Web 应用程序的异步行为 我的代码很简单 const express require express const app express const port 3000 app get re
  • 如何防止强制推送到 GitHub Wiki 存储库?

    对于那些不知道的人来说 每个带有 wiki 的 GitHub 存储库都会自动拥有一个 wikirepo 它只是一个专门用于 wiki 内容的常规 git 存储库 前任 https github com junegunn fzf wiki 您
  • Azure 数据工厂:对于特定属性,每个 item() 值不存在

    我的每个活动都有一个存储过程 SP 其中我显然使用 item 输入值 现在假设 SP 的输入值为 item a item b 和 item c 问题 对于 foreach 的某些迭代 item b 不存在 这是预期的 那么我应该如何在存储过
  • AngularJS [$injector:unpr] 未知提供者:dataProvider <- data <- PageCtrl

    我看过其他答案 但到目前为止没有任何帮助我 我在文件中使用以下代码时收到此错误 angular module myApp page ngRoute config routeProvider function routeProvider ro
  • 发现元素可见后无法使用递归来定位元素

    我的问题 我正在尝试使用页面对象中的部分来单击 Nightwatch 下拉列表中的选项 我不确定这是否是部分声明的问题 或者我遗漏了一些与范围相关的内容 问题是它发现该元素可见 但是当它尝试单击时会抛出错误 无法使用递归找到它 我可以尝试使
  • R:Git + Shiny服务器自动化部署

    我有一个 Shiny 服务器安装 以及一个适用于我的 Shiny 应用程序的 Git 存储库 我开发了 Shiny 应用程序并将其推送到 Git 存储库 并且我希望 Shiny 服务器从 Git 存储库加载该应用程序的最新版本 我怎样才能做
  • IE Flexbox justify-内容中心溢出问题

    在 IE11 上查看以下演示时 存在内容显示右对齐并被推到屏幕之外的问题 Codepen 演示 以下是证明内容中心合理性的代码 search results display webkit box display webkit flex di
  • 尝试禁用浏览器的后退按钮

    我写了两个 HTML 文件 登录 html a href Home html Next Page a 首页 html a href Login html gt gt Prev Page a 我正在尝试禁用浏览器的后退按钮 如果我在 c
  • 绘图中的注释自动放置

    我有代码可以轻松地自动处理着色和绘制多个图 对我来说 我想让注释变得更容易 goal 如果注释 xy 与前一个注释冲突 请向上移动 直到与其他注释不发生冲突 如果有一个功能已经能够实现这一点 那将是一个梦想 但我找不到 否则 列出注释并在坐
  • 如何从流中准确读取一个字符?

    我有一个带有一些文本数据的流 可以是 ASCII UTF 8 Unicode 编码是已知的 我需要从流中准确读取一个字符 而不再前进流位置 StreamReader 是不合适的 因为它会积极地从流中预取数据 Ideas 如果您想一次一个字节
  • 正则表达式匹配确切的数字,如果它存在于字符串中则不匹配

    我的正则表达式 3 b Matches 103 134 256 3 我希望它只匹配唯一的 3 数字 3 将是一个动态数字 正则表达式必须匹配该确切数字 而不是其他数字 如果该数字存在于另一个数字 如 103 中 则它不能匹配 那么它不应该匹
  • 对 NHibernate 缓存搜索的影响,其结果包括映射为公式的计算值(例如排名)

    当在 NHibernate 中使用公式定义计算属性时 当公式根据查询限制 尤其是查询缓存 改变其结果时 会产生什么影响 更具体地说 请考虑以下简单的 C 类 public class Entity public Entity public
  • 使用 Linux binutils 设置 ELF 映像基地址的优雅方法?

    对于个人项目 我需要编写一个在非默认内存地址加载的可执行文件 从这个问题 我知道我可以设置 ELF 的入口地址并手动修改节地址 以便可执行文件有效地基于我选择的某个地址 然而 答案表明 只有当我不进行 glibc 初始化 这个项目需要它 时
  • 无序线程问题

    我问过关于锁定的问题here人们回答说我的锁实现没有问题 但我发现了问题 这是相同的锁实现 我得到了奇怪的结果 我希望看到数字从 1 开始 但它是从 5 开始 示例如下 class Program static object locker