杂谈

杂谈

       今天觉得没有什么意义。一大早开始就逃课,悲催呢。呵呵,其实我不想逃课,但是这种叫马克思的东西从初中开始就一直跟着我了,说句实话,我看见它就想吐了。回到教室后,开始看看昨天晚上写的那个哈夫曼编码,觉得好久没有敲代码了,生疏了啊。修改了些东西。然后突然发现:为什么vs2005没有报告内存泄露呢??我自己new的对象,我自己没有delete,但是编译器却没有报告。奇怪了。先不管了,自己添加上delete的代码吧。

第二件事----关于namespace

           C++ 提供了命名空间的机制。我觉得这好像java的包差不多了。其实我对java不是很了解。不知道java的包和namespace有什么主要的区别。namespace主要是为了解决命名冲突的。在大型程序中,肯定需要定义很多的类,变量,函数等。由于分工不同,每个人负责自己的模块,这就难以避免命名冲突了。为了避免命名冲突,使用namespace,每个namespace就是一个作用域。在每个namespace内不允许有相同的名字,在不同的namespace可以有相同的名字。比如:

namespace Test1
{
	class CTest
{
Public:
	CTest()
{
	std::cout<<”construction belong to namespace Test1”<<std::endl;
}
};
}

namespace Test2
{
	class CTest
{
	Public:
		CTest()
{
	std::cout<<”Construction belong to namespace Test2”<<std::endl;
}
};
}

       在需要使用namespace内的变量的时候,可以指定namespace进行引用。也可以使用using进行指定。如果需要引用namespaceTest1中的CTest,可以使用Test1::CTest,也可以使用using Test1::CTest,这样的话在本使用using的作用域内,所有的CTest就是Test1::CTest。

        namespace还具有分开定义的功能。在标准命名空间(std)中,定义了许多类,模板等。其都是分别定义在相应的文件中。所以,定义namespace的时候只需要标明所定义的类属于哪个namespace。当进入该namespace的时候就是可见的。

注意:namespace的定义不能使用”;”表示结束。

       从早上开始看那本书—--编程之美。各位不要嘲笑我哦,我可不是看它的名字和作者来看的。我只是觉得这本书能够很通俗易懂的将算法和编程结合在一起。所以才去啃一啃的。开篇文章(让CPU占用率曲线听你指挥),在读第一遍的时候,做了下试验。但是现在机器都是双核的,无法验证那单核的效果。不过在双核机器上实现占用率50%的话是很简单的。只要写一个死循环就KO了。关键的地方是学到了个SetThreadAffinityMask()。

函数介绍:

DWORD_PTR WINAPISetThreadAffinityMask(

  __in  HANDLE hThread,

  __in  DWORD_PTRdwThreadAffinityMask

);

参数:

hThread为要设定掩码的线程的句柄;该句柄必须具备THREAD_SET_INFORMATION 或者THREAD_SET_LIMITED_INFORMATION的权限以及THREAD_QUERY_INFORMATION 或者THREAD_QUERY_LIMITED_INFORMATION的权限。

dwThreadAffinityMask为掩码。

返回值:

如果该函数成功执行,将返回先前进程的掩码;如果未成功执行,则返回0.欲获得出错信息,请调用GetLastError()。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值