1.在多线程情况下,如何获取当前线程id
Linux下获取当前线程ID号函数:
pthread_t pthread_self();
返回:当前线程的ID号
pthread_t 数据类型的定义如下:
typedef unsigned long int pthread_t;
sizeof(pthread_t) = 4,4个字节的整数。
Windows下获取当前线程ID号的函数:
DWORD GetCurrentThreadId();
返回值:当前线程的ID号
DWORD数据类型定义:
typedef unsigned long DWORD;
在Windows下pthread-win库的pthread_t定义如下:
typedef struct {
void * p; /*Pointer to actual object */
unsigned int x; /*Extra information - reuse count etc */
} ptw32_handle_t;
typedef ptw32_handle_t pthread_t;
与Linux的thread_t不一样,它是一个结构,不是一个整数值
在Windows和Linux下可用的获取线程ID号的内联函数如下:
#ifdef WIN32
#include <windows.h>
#else
#include <pthread.h>
#endif
inline unsigned int PthreadSelf()
{
#ifdef WIN32
return::GetCurrentThreadId();
#else
returnthread_self();
#endif
}
2.如何给你的线程命名?察看你的系统
集成开发环境(IDE)能给图形界面应用程序提供一个很好的调试工具,但是它却不能调试一个多线程的Java服务器程序。
幸运的是,有几种工具,例如logging应用程序接口(API)或者Java Debugger可以用来调试Java服务器程序。开发者还能使用一个系统的线程堆在任何时候观察系统的状态。
运行服务器,然后按[ctrl] [/],会运行一个系统线程堆,这样将输出当前运行的所有线程,例如: ^\Full thread dump: Thread-1" prio=5 tid=0x87fe0 nid=0x800013b8 waiting on monitor [0。 。
0xbfffe9f8] "Thread-0" prio=5 tid=0xafde0 nid=0x72a00 runnable [0x173f000。
0x173fb48] at java。net。
PlainSocketImpl。socketAccept(Native Method) at java。
net。PlainSocketImpl。
accept(PlainSocketImpl。java:421) at java。
net。ServerSocket。
implAccept(ServerSocket。java:243) at java。
net。 ServerSocket。
accept(ServerSocket。java:222) at com。
generationjava。net。
PortListener。run(PortListener。
java:38) at java。lang。
Thread。run(Thread。
java:496) "Signal Dispatcher" daemon prio=10 tid=0xa5f80 nid=0x52af0 waiting on monitor [0。
0] "Finalizer" daemon prio=8 tid=0xa46c0 nid=0x4d930 waiting on monitor [0x10a8000。 。
0x10a8b48] at java。lang。
Object。wait(Native Method) at java。
lang。ref。
ReferenceQueue。remove(ReferenceQueue。
java:108) at java。 lang。
ref。ReferenceQueue。
remove(ReferenceQueue。java:123) at java。
lang。ref。
Finalizer$FinalizerThread。run(Finalizer。
java:162) "Reference Handler" daemon prio=10 tid=0xa3b70 nid=0x4cca0 waiting on monitor [0x1027000。 。
0x1027b48] at java。lang。
Object。wait(Native Method) at java。
lang。Object。
wait(Object。java:420) at java。
lang。ref。
Reference$ReferenceHandler。 run(Reference。
java:110) "VM Thread" prio=5 tid=0xa2de0 nid=0x4ca20 runnable "VM Periodic Task Thread" prio=10 tid=0xa56b0 nid=0x52890 waiting on monitor 后面的四个线程是标准线程,而其他的则跟运行的服务器程序有关。 这两个线程被命名为Thread-1和Thread-0,如果用Thread th = new Thread(runnable,"Server")代替Thread th = new Thread(runnable)去创建进程,你就可以命名自己要创建的线程。
另外,如果你调用java。lang。
Thread的setName(String)方法,你也能命名你的线程,并且可以很容易从线程堆的输出中发现原来的Thread-0是服务器程序。 "Server" prio=5 tid=0xafde0 nid=0x72a00 runnable [0x173f000。
。0x173fb48] 而原来的Thread-1线程现在变成了Thread-0。
通过命名线程和取得线程堆,开发者就能看到Java虚拟机(JVM)的内部状态。如果想得到更多信息的话,你就得去研究Java Debugger了。
完成 丢弃。
3.Win10系统如何用Robocopy多线程功能加快文件复制?
如果你要将Win10中的大量文件和文件夹复制到另一个驱动器,可以仿照如下步骤来实现 Robocopy 多线程功能以达到超快的数据复制速度: 1、以管理员权限打开「命令提示符」 2、执行类似如下命令进行多线程复制:Robocopy C:\source\folder\path\ D:\destination\folder\path\ /S /ZB /R:5 /W:5 /V /MT:32例如:Robocopy D:\Pictures\桌面主题 E:\桌面主题 /S /ZB /R:5 /W:5 /V /MT:32注意:请自行将源路径和目标路径替换成你自己的。
Robocopy命令行用法解释:Robocopy 的功能非常强大,因此其命令行开关也非常之多,下面我们只列出能够可靠、快速复制文件的常用开关。/S 复制子目录,但不复制空的子目录。
/E 复制子目录,包括空的子目录。/Z 在可重新启动模式下复制文件。
/ZB 使用可重新启动模式;如果拒绝访问,请使用备份模式。/R:5 失败副本的重试次数: 默认为 1 百万。
/W:5 两次重试间的等待时间: 默认为 30 秒。/TBD 等待定义共享名称(重试错误 67)。
/NP 无进度 不显示已复制的百分比。 /V 生成详细输出,同时显示跳过的文件。
/MT:32 使用 n 个线程进行多线程复制(默认值为 8)。必须至少为 1,但不得大于 128。
上述命令中最为重要的开关就是 /MT,它让 Robocopy 能够以多线程模式进行复制传输。如果你没为 /MT设置数字,那么默认数字是 8,这意味着Robocopy将会同时复制 8 个文件。
推荐使用 32 个线程,虽然可开的线程可以更多,但数字越大,所使用的系统资源和带宽就越多。
4.win10出现找不到OrangeEmu.dll,无法继续执行代码怎么办?好急啊啊
长话短说:
因为一般游戏启动时会提示丢失的那些dll严格来讲都不算是系统文件,微软原版系统刚安装完的时候本来就不存在那些dll,其实不是“丢失”,就是原本就没有,需要自己另外安装的。
举个栗子,比如很多老游戏需要dx9运行库,二win8.1系统本身只自带dx11,没有老旧的9.0版,就会出现提示丢失d3dx9之类的dll
很多人喜欢传播“下载dll放到system32或syswow64”这种解决办法,倒也不是完全不可行,有时候还是可以的,要看运气。对小白来讲还是麻烦了点,而且不像修复工具一样能一次性搞定大部分dll运行库的相关问题。
并且,有些人建议的重装系统大法也是没用的(指原版系统,换系统除外)。
因为这些所谓的dll丢失,绝大部分都并不是真的“丢失”,而是原版系统本身确实就没有自带。
msvcp、msvcr、vcomp140.dll属于VC++2015版
msvcp、msvcr、vcomp120.dll属于VC++2013版
msvcp、msvcr、vcomp110.dll属于VC++2012版
msvcp、msvcr、vcomp100.dll属于VC++2010版
msvcp、msvcr、vcomp90.dll属于VC++2008版
msvcp、msvcr60、71和80.dll,以及vcomp.dll(不带数字版本号)属于VC++2005版
除了丢失、缺少这类错误之外,如果一个程序打开之后提示“并行配置错误”,那么也是因为没有安装VC++运行库。
缺少PhysXLoader.dll是NVIDIA PhysX物理加速引擎的问题
提示没有找到xlive.dll是缺少Games For Windows Live
缺失 openal32.dll是缺少OpenAL Installer for Windows的原因
建议使用dll修复工具,解压之后打开主程序点击“修复”按钮,稍等即可解决。
此文件本质上是dll运行库的一部分,丢失、缺失此类文件都是dll运行库的问题,而不是游戏本身的问题。所以重新下游戏肯定是没有用的。
关于附件:dll运行库修复工具是很容易搜到下载的,也可以直接下载我附件(上传附件仅仅是为了下载方便,也可以直接搜索下载),附件免费下载,不要积分。7z、rar、zip文件要用解压缩软件打开,x86版就是32位版,请不要再问出“为什么只有86位版”之类搞笑的问题。
运行库【修复工具】下载地址.zip来自:百度网盘点击跳转网盘
5.Robocopy备份Win10专业版64位数据有何技巧呢
windows 10提供了许多备份和恢复数据的方法,甚至是整个系统。
例如,有文件历史记录,系统还原,新鲜启动和系统映像恢复仅举几例。如果您对数据的安全性有所了解,那么您已经在使用一个或多个windows 10的备份工具,很有可能。
但是,您可能希望将数据文件的附加副本放在安全的位置。 虽然您可以通过拖放将文件和文件夹复制到外部硬盘驱动器来轻松实现,但这可能是一个繁琐的操作。
幸运的是,Robocopy提供了80多个命令行参数和开关,可以创建强大的数据备份操作。 为了帮助您获得成功,深入研究了Robocopy的命令行开关,并开发了一个漂亮的小脚本,可以用来创建用户配置文件文件夹(C:\ Users \ YourName)中所有数据文件的精确镜像副本。
我们来看看吧。构建命令行对于我的例子,我将把用户配置文件文件夹C:\ Users \ Greg Shultz的数据文件内容备份到一个名为TheBackup的文件夹中,该文件夹被分配到驱动器号为F的外部硬盘上。
(你'当然,用你自己的名字和路径替换它。 )我的基本命令从以下开始:Robocopy C:\Users\Greg Shultz F:\TheBackup现在,我想备份源中的每个文件夹,甚至是任何空文件夹,因为它们可能是未来数据的占位符。
我也不想在我的硬盘上删除备份上的文件。虽然我可以使用/ S和/ PURGE开关实现我的目标,但是/ MIR开关让我可以用一个开关来完成这两个任务。
我的命令现在是:Robocopy C:\Users\Greg Shultz F:\TheBackup /MIRC:\ Users \ Greg Shultz文件夹包含我不想要的几个隐藏的系统文件和文件夹,或者需要在我的Robocopy操作下备份 - 它们由其他备份工具拾取。 例如,我不需要备份NTUSER。
DAT文件,也不需要备份AppData文件夹的内容。 另外,C:\ Users \ Greg Shultz文件夹包含一些我不需要备份的连接点。
windows 10使用连接点将各种操作系统文件夹链接到用户配置文件文件夹。 例如,Cookie文件夹和SendTo文件夹通过连接点链接到用户配置文件文件夹。
我将使用/ XA:SH开关排除隐藏的系统文件,我可以使用/ XD AppData来排除整个AppData文件夹。 然后我将使用/ XJD开关排除所有的连接点。
我的命令现在是:Robocopy C:\Users\Greg Shultz F:\TheBackup /MIR /XA:SH /XD AppData /XJD当它遇到正在使用的文件时,Robocopy最方便的功能之一就起作用了。 当它执行时,Robocopy将停止并等待该文件关闭,以便它可以继续复制操作。
它将重试每30秒复制一次文件。 默认的重试次数是100万(不开玩笑!)。
因为这很可能会阻止备份操作的完成,您应该将其重置为合理的数字。要更改重试次数,您将使用/ R开关。
要更改重试之间的等待时间,您将使用/ W开关。 我选择了五次重试,等待15秒钟。
这样,经过合理的重试次数等待,Robocopy将继续前进。 我的命令现在是:Robocopy C:\Users\Greg Shultz F:\TheBackup /MIR /XA:SH /XD AppData /XJD /R:5 /W:15此时,我准备添加多线程交换机,这使得Robocopy可以执行多线程复制选项。
更具体地说,通过多线程功能,Robocopy可以并行复制多个文件,这将导致非常快的备份操作。多线程开关为:/ MT [:n],其中n为1到128之间的数字,表示要使用的线程数。
请记住,n是可选的,默认情况下,/ MT开关将使用八个线程。 我在我的例子中使用32个线程,因为我发现它是一个好的起点。
我的命令现在是:Robocopy C:\Users\Greg Shultz F:\TheBackup /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32像所有命令行工具一样,Robocopy可以在命令提示符窗口中了解操作的状态。 但是,您可能希望在日志文件中自定义并记录该反馈。
我喜欢整个画面,所以我会使用/ V开关。 但是,我真的不需要知道每个文件副本的进度百分比,所以我也使用/ NP开关。
然后创建我的日志文件,我将使用/ LOG开关,每次都覆盖现有的日志文件。 现在我的命令是:Robocopy C:\Users\Greg Shultz F:\TheBackup /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32 /V /NP /LOG:Backup。
log创建和使用您的脚本现在您知道脚本是如何工作的,哪些开关是必需的,您可以启动记事本,键入命令,并将文件另存为RobocopyBackup。 cmd。
为了确保脚本和打开的日志文件不会干扰备份,我在根目录中创建了一个名为BackupTool(C:\ BackupTool)的文件夹,并将脚本保存在该文件夹中。在每个备份操作后,您将在与脚本相同的目录中找到日志文件。
请记住,日志文件是一个简单的文本文件,它可以大于记事本可以处理的。 因此,您可能需要使用写字板或其他文字处理器来打开和查看日志文件。
现在,每当你想做一个额外的备份,你可以双击RobocopyBackup。cmd启动它。
完成后,您可以检查Backup。log文件。
6.windows10 怎么查看端口号
具体操作步骤:
1、按WIN+X组合键,调出系统配置菜单,选择命令提示符(管理员);
2、输入netstat–na然后点击回车即可。
通过上面两个步骤的简单操作,我们就能够在命令提示符中查看所有win10开放的端口了。
对计算机软件的维护主要有以下几点:
(1)对所有的系统软件要做备份。当遇到异常情况或某种偶然原因,可能会破坏系统软件,此时就需要重新安装软件系统,如果没有备份的系统软件,将使计算机难以恢复工作。
(2)对重要的应用程序和数据也应该做备份。
(3)经常注意清理磁盘上无用的文件,以有效地利用磁盘空间。
(4)避免进行非法的软件复制。
(5)经常检测,防止计算机传染上病毒。
(6)为保证计算机正常工作,在必要时利用软件工具对系统区进行保护。
总之,计算机的使用是与维护分不开的,既要注意硬件的维护,又要注意软件的维护。
7.win10怎么查看进程的线程
工具:
win10
方法如下:
第一步,进入操作系统桌面
第二步,右键任务栏,点选启动任务管理器
第三步,弹出任务管理器窗口
第四步,点击查看->选择列
第五步,弹出选择进程页列的窗口
第六步,点选图示线程数的复选框,点击确定
第七步,回到刚才的任务管理器,可以看到线程数的一列数据
8.windows 如何查看线程数量
一、利用设备管理器
1、右键单击Win10开始按钮,点击菜单中的“设备管理器”。
2、在Widows10设备管理器窗口,点开处理器项目,我们就能查看CPU线程数了。
二、利用任务管理器
1、Win10任务栏空白处单击鼠标右键,菜单中点击选择“任务管理器”。
2、在任务管理器窗口切换至“性能”,对着CPU利用率图形界面,单击鼠标右键,鼠标指向菜单中的“将图形更改为”,点击选择次级菜单中的“逻辑处理器”。
3、随后出现几个图形,就是几个线程。
转载请注明出处windows之家 » win10的线程号怎么看