![]() |
1
4
让我对你的代码感到困扰的一件事是你调用
更新: 我认为超斯潘发布了一个很好的实现,但我会使它更简单,使它成为没有任何东西可以做到的。 可能地 在线程安全方面出错:
我已经把字典完全删掉了
|
![]() |
2
2
你可能想这么做…
|
![]() |
3
2
它不起作用的原因是当他点击events.values.toarray()时 并非所有排队的委托都已执行 因此 并非所有autoreseteevent实例都已添加到字典中 . 在Values属性上调用ToArray()时,只会得到已经添加的实例! 这意味着在被阻塞的线程继续之前,您将只等待一些电子邮件被同步发送。其余的电子邮件还没有被线程池线程处理。
有更好的方法,但是
好的,考虑到以下要求:
我将创建以下应用程序: 从文本文件(file.readalllines)加载电子邮件。接下来,创建2个*(个CPU核心)线程。确定每个线程要处理的行数;即,将行数(每行相加)除以线程数,四舍五入。接下来,设置每个线程遍历其地址列表的任务(使用skip(int).take(int)来划分行)并同步发送()每个电子邮件。每个线程将创建并使用自己的smtpclient。当每个线程完成时,它会增加存储在共享位置中的int。当该int等于线程数时,我知道所有线程都已完成。在再次检查之前,主控制台线程将在设置的时间长度内连续检查此数字是否相等和sleep()。 这听起来有点笨拙,但会奏效的。您可以调整线程的数量以获得单个计算机的最佳吞吐量,然后从中进行推断以确定适当的线程数量。在完成之前,肯定有更优雅的方法来阻塞控制台线程,但没有一个简单的方法。 |
![]() |
4
0
我也遇到了类似的问题(使用线程中的smtpclient,电子邮件只是间歇性地到达)。 最初,发送电子邮件的类创建了一个smtpclient实例。这个问题通过每次需要发送电子邮件时更改代码来创建smtpclient的新实例来解决。 和 处理smtpclient(使用using语句)。
|
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |