命名约定的线程?

对线程进行命名是很有帮助的,因此可以对哪些线程进行诊断和debugging目的进行分类。

对于multithreading应用程序中的线程是否有一个特定的命名约定,比另一个更好? 任何指导? 什么样的信息应该进入一个线程的名称? 你有什么了解你的线程命名,可能有助于其他人?

据我所知,没有标准。 一段时间以来,我发现这些指导方针是有帮助的:

  • 使用短名称是因为它们不会使日志文件中的行太长。

  • 在重要部分的开始处创build名称。 graphics用户界面中的日志查看器倾向于使用包含列的表,而且线程列通常很小,或者由您读取所有其他内容。

  • 不要在线程名称中使用“线程”这个词,因为它很明显。

  • 使线程名称易于理解。 避免类似的声音线程名称

  • 如果您拥有多个相同属性的线程,请使用对应用程序的一次执行或一个日志文件唯一的ID进行枚举,以适合您的日志习惯。

  • 避免像“WorkerThread”(你如何命名接下来的5个工作线程?),“GUIThread”(哪个GUI?对于一个窗口是一个窗口?)或“Calculation”(它是什么计算?)的概括。

  • 如果您有一个使用线程名称来查看应用程序日志文件的testing组,请不要在一段时间后重命名您的线程。 你的testing人员会恨你这样做。 在testing良好的应用程序中的线程名称应该留在那里。

  • 当你有线程服务networking连接时,尝试在线程名称中包含目标networking地址(例如channel_123.212.123.3)。 如果有多个连接到同一个主机,不要忘记枚举。

如果你有很multithreading,忘记命名一个,你的日志机制应该输出一个唯一的线程ID(特定于API,例如调用pthread_self())

而Thorsten的答案是最全面的,你可能想看看Tomcat如何命名它的线程。 我发现这很有用。 我们使用石英调度程序运行多个线程,Thorsten提出的许多命名规则都很有用。

你打算使用线程池吗? 如果是,那么这将减less你可以添加更多有用的元信息的机会。 如果没有,天空是有限的多less有用的信息,你可以有。

命名线程是有用的,你应该遵循一个命名约定,其他的东西,variables,方法或类。 按照他们所做的和简洁的名称命名。 如果您遇到需要线程转储的问题,那么查看名称并知道在代码中查找问题的位置会比较好,而不是检查堆栈跟踪和猜测。

唯一不同的是,如果有多个相同types的线程,则应该添加某种types的索引,因为线程名称应该是唯一的以满足某些API。 如果您显示线程名称以知道您的应用程序如何在不同的线程上执行部分执行,则还可以帮助logging日志。

关于什么:

[namespace]。[Class] [。Class …]。[方法] [当前线程]?

所以你的名字是:

Biz.Caching.ExpireDeadItems1
Biz.Caching.ExpireDeadItems2
Biz.Caching.ExpireDeadItems3

等等,为每个线程。

嗯…在我写的大量multithreading的应用程序中,我通常有多个线程执行相同的function,所以我不确定命名线程在这种情况下是非常有用的。 也就是说,我确实给每个线程分配了一个整数ID,这个ID是在线程生成的日志消息中打印的,以帮助debugging。

对于具有专门的独特职责的线程的其他应用程序,是的,我给他们描述性的命名…但是我没有这样做,因为它是一个线程应用程序,我这样做,因为这是一个编码的最佳做法。

我倾向于将命名线程命名为方法或variables。 select一些简洁描述线程负责的过程。 我不认为有很多额外的信息,你可以或应该把一个线程名称。 主要目标是expression而简洁。

唯一的约定可能是将增加后缀添加到作为池的一部分的线程。

在.NET中我已经看到了几个线程的命名约定。

有些人更喜欢在名字的开头使用't'(例如tMain Thread ),但我不认为它有任何实际价值。 相反,为什么不使用简单的描述性名称(行variables),如HouseKeepingScheduler等等。