一般网络多线程服务器软件开发会涉及ACE和log4cxx。

使用ACE_Task可以很方便地进行多线程编程。

本文将简单演示一下,如何使用log4cxx可以日志的形式记录多线程的执行情况;以及如何使用procexp.exe查看当前进程中执行的线程。

以下是一段简单的代码:

#include "ace/OS.h"
#include "ace/Task.h"
#include <iostream>#include <log4cxx/logger.h>
#include <log4cxx/basicconfigurator.h>
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/xml/domconfigurator.h>
#include <log4cxx/helpers/exception.h>using namespace log4cxx;
using namespace log4cxx::xml;
using namespace log4cxx::helpers;class MyTask : public ACE_Task<ACE_NULL_SYNCH>
{
public:MyTask() {BasicConfigurator::configure();PropertyConfigurator::configure("log4j.properties");_rootLogger = Logger::getRootLogger();}int svc(){_rootLogger->debug("执行线程");for (int i = 0; i < 100; ++i){Sleep(1000);}return 0;}private:LoggerPtr _rootLogger;
};int ACE_TMAIN(int, ACE_TCHAR *[])
{MyTask task;task.activate(THR_NEW_LWP | THR_JOINABLE, 2);task.wait();task.close();return 0;
}

代码中,将分配2个线程,这两个线程都会执行svc()方法。
使用procexp.exe可以查看当前的进程中的线程情况,如下图所示:

可以看到进程4992,分配了三个线程:3452(主线程)、4144、5576(因为这两个线程大部分时间都是Sleep,所有看不到所占用的CPU情况)

日志文件hello.log中也记录相应的情况:(进程ID使用的十六进制)
DEBUG root [0x00001030] - 执行线程   --->  4144线程
DEBUG root [0x000015c8] - 执行线程   --->  5576线程

======================================
本文示例中使用的log4cxx,可以参考另一篇文章:
windows下log4cxx编译和使用记录
http://blog.csdn.net/vivianke/article/details/7833482

使用procexp.exe查看线程相关推荐

  1. 【Java多线程】Join的使用、如何使用getState()查看线程的状态

    代码 t.join();表示:线程t插队 main被阻塞 需要等待t执行完毕后main再继续 package cn.hanquan.test;import java.text.SimpleDateFo ...

  2. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

    转载自  jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令 1.Jstack  1.1   jstack能得到运行java程序的java stack和native stack ...

  3. 查看线程CPU利用率

    查看线程CPU利用率 方法1:利用ps命令查看对应的线程 1. ps -ef | grep 进程名称 2. ps -mp 进程ID -o THREAD,pid,tid,cmd,time,%cpu,%m ...

  4. Java 线程实例二(终止线程、生产者/消费者问题、获取线程状态、获取所有线程、查看线程优先级、中断线程)

    终止线程 Java中原来在Thread中提供了stop()方法来终止线程,但这个方法是不安全的,所以一般不建议使用. 本文向大家介绍使用interrupt方法中断线程. 使用interrupt方法来终 ...

  5. Java 线程实例一(查看线程是否存活、获取当前线程名称、状态监测、线程优先级设置、死锁及解决方法、获取线程id、线程挂起)

    查看线程是否存活 以下实例演示了如何通过继承 Thread 类并使用 isAlive() 方法来检测一个线程是否存活: public class TwoThreadAlive extends Thre ...

  6. java判断优先级代码,Java如何查看线程的优先级?

    在Java编程中,如何查看线程的优先级? 以下示例演示如何使用Thread类的getPriority()方法检查线程的优先级. package com.yiibai; public class Thr ...

  7. 【Arthas】Arthas thread查看线程信息

    1.概述 转载:Arthas thread查看线程信息 2.开篇 Arthas提供thread命令获取当前thread的信息,包括查询指定最忙的前N个线程并打印堆栈,找出当前阻塞其他线程的线程,显示所 ...

  8. win10 ,jkd8 查看线程状态

    jvisualvm  打开JVisualVM(能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈,详细信息参见JVisualVM 简介) 可以点击右上角的 ...

  9. 使用jstack查看线程

    目录 jstack -l pid 连接活动线程 jstack统计线程数 Java中线程的状态 统计线程数 统计 RUNNABLE 的线程数 统计 WAITING 的线程数 统计 TIMED_WAITI ...

  10. linux下查看mysql线程_linux-如何查看线程在哪个CPU内核中运行?

    linux-如何查看线程在哪个CPU内核中运行? 在Linux中,假设线程的pid是[pid],则从目录/ proc / [pid]中我们可以获得许多有用的信息. 例如,这些proc文件/ proc ...

最新文章

  1. 安装部署及升级到Exchange Server 2010
  2. 【Python-ML】集成多数投票分类器-训练评估调优
  3. jenkins pipeline发送邮件报错解决办法: failed to connect, no password specified?
  4. JSP、Servlet、Tomcat、JDK、J2EE版本比较
  5. 使用CORS解决同源限制
  6. python编程第四版_清华编程教授强力推荐《Python编程》,指导你如何学习python
  7. 麒麟710f能否升级到鸿蒙系统,定了!麒麟710以上支持升级鸿蒙系统,荣耀也可以升级...
  8. Java基础篇:什么是异常,异常处理的基础是什么?
  9. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
  10. 磁盘文件系统Fat、Fat32、NTFS、exFAT的优缺点
  11. 基于RS485通讯总线的ModbusRtu协议C#上位机开发源码
  12. Mac安装jdk并配置环境变量
  13. 一个div里面包含两个div让两个div垂直居中
  14. 苹果笔记本怎么找文件夹_教你如何在苹果电脑上查看隐藏文件夹
  15. 不可不学的摄影技巧.1—构图
  16. 辛弃疾·青玉案·元夕
  17. 巨杉数据库SequoiaDB协调节点
  18. 修炼成高薪Java程序猿——从优秀的Java命名规范开始
  19. 【开源】港中文多媒体实验室开源目标跟踪工具箱MMTracking
  20. NB-IoT的DRX、eDRX、PSM三个模式是什么?

热门文章

  1. sum of digits
  2. 10个大数据思维原理,你了解多少?
  3. java双缓冲_java 双缓冲技术
  4. 关系传递闭包Warshall算法之思想的一种解说
  5. matlab读取气象数据,基于MATLAB实现3种气象数据的读取和绘图
  6. 别再找Axure XX版,这款原型工具永久免费!
  7. 【开源项目】二、Smart Admin 通用型中后台解决方案
  8. Android隐藏桌面图标实现
  9. h5自我介绍作品_自我介绍h5模板
  10. 【python教程入门学习】Pygame下载和安装