`
wujierd
  • 浏览: 46173 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对一段代码的一些注释

 
阅读更多
该博主真的是很牛逼。代码来自http://blog.csdn.net/morewindows/article/details/7442333

//经典线程同步互斥问题
#include <stdio.h>
#include <process.h>
#include <windows.h>

long g_nNum; //全局资源
unsigned int __stdcall Fun(void *pPM); //线程函数
const int THREAD_NUM = 10; //子线程个数

int main()
{
	g_nNum = 0;
	HANDLE  handle[THREAD_NUM];
	
	int i = 0;
	while (i < THREAD_NUM) 
	{
		handle[i] = (HANDLE)_beginthreadex(NULL, 0, Fun, &i, 0, NULL);
		i++;//等子线程接收到参数时主线程可能改变了这个i的值  主线程会在子线程1、2、3等没有执行结束时来访问这里,也就是并不是等到线程1执行结束了,再创建线程2.所以线程X在Fun函数输出nThreadNum,i++已经被执行多次了。
	}
	//保证子线程已全部运行结束
	WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);  
	return 0;
}

unsigned int __stdcall Fun(void *pPM)  //pPM是一个指针地址,是0xabf2343542,这样的,不是int型,不是double型。
{
//由于创建线程是要一定的开销的,所以新线程并不能第一时间执行到这来
	int nThreadNum = *(int *)pPM; //子线程获取参数
	Sleep(50);//some work should to do
	g_nNum++;  //处理全局资源   子线程可以一窝蜂的来访问这里,子线程1执行到printf("线程编号为%d  全局资源值为%d\n", nThreadNum, g_nNum);这一句的时候,g_nNum++已经被执行多次了,g_nNum的值不在是1了。
	Sleep(0);//some work should to do
	printf("线程编号为%d  全局资源值为%d\n", nThreadNum, g_nNum);
	return 0;
}

分享到:
评论

相关推荐

    小米便签源代码+注释

    这个压缩包包含了小米便签应用的完整源代码,并且每段代码都有详细的注释,使得初学者能够更好地理解和学习代码的实现逻辑。 在Java编程中,源代码是程序员用人类可读的语言编写的程序文本,它描述了计算机应该如何...

    java代码注释模板

    Java代码注释是编程实践中非常重要的一个环节,它有助于提高代码的可读性和维护性。在团队合作中,良好的代码注释能够帮助其他开发者更快地理解代码的功能和逻辑,节省了阅读和调试的时间。本资源包含一个“java代码...

    Eclipse 代码注释模板

    其中,代码注释模板是一项非常实用的功能,可以帮助程序员快速生成规范、一致的注释,提高开发效率并保持代码的可读性。 在Eclipse中,用户可以自定义代码注释模板,这通常涉及到类、方法、变量等不同类型的注释...

    C/C++/Java 源代码注释清除工具

    首先,这款“C/C++/Java 源代码注释清除工具”的出现,很好地满足了开发人员在特定阶段对代码文件“去注释化”的需求。注释的存在虽然在开发阶段对于代码的可读性有着不可或缺的作用,但在软件发布前,注释可能会...

    VB代码注释器

    VB代码注释器是一款专为Visual Basic (VB)开发者设计的实用工具,旨在提升编程效率,简化代码注释和取消注释的操作。该插件在安装后,会在VB的集成开发环境(IDE)中添加新的功能按钮,允许用户快速地对代码进行注释...

    linux内核代码注释

    - **示例**:“对linux内核代码做了一个比较详尽的描述”中的部分代码片段提到了内核初始化阶段的一些关键步骤,如硬件资源的分配、核心数据结构的建立等。 #### 2. 内存管理模块 - **描述**:这部分注释重点解释了...

    linux 源代码完整注释

    源代码注释通常会解释函数的作用、变量的意义以及关键流程的逻辑。通过阅读这些注释,我们可以了解到: 1. **进程管理**:这部分代码处理进程创建、调度、同步和通信。注释会解释如何实现多任务并行,如何在不同...

    稀缺资源代码注释器.rar

    而"稀缺资源代码注释器"正是一款专注于帮助开发者理解和翻译代码的实用工具,尤其对于C++和Java这两种广泛使用的编程语言。本文将详细探讨代码注释器的工作原理、使用方法及其在实际开发中的价值。 首先,我们来...

    去除注释 去注释

    需要编写一个简单的词法分析器,逐字符扫描代码,遇到`//`或`/*`时开启注释状态,直到遇到相应的结束符才关闭。这需要对编译原理有一定的理解。 在实际操作中,如果已经有现成的工具,比如`quzhushi.exe`和`...

    Qt编写移除C++代码注释源码

    总的来说,这个"Qt编写移除C++代码注释源码"项目是一个实用的工具,它展示了Qt5的文本处理能力和对C++语法的理解。通过学习和分析这段源码,开发者不仅可以掌握如何使用Qt进行文件操作,还能深入理解C++的语法结构,...

    代码注释率,有效解决程序健壮性的问题

    此外,即使对于单个开发者,过一段时间后重新查看自己的代码,有注释也会使理解过程更加顺畅。 其次,良好的注释有助于预防和定位错误。当程序出现异常或bug时,注释可以提供上下文信息,帮助开发者更快地定位问题...

    代码注释器

    例如,你可以将一段Java代码转换为C++,以便在C++环境中运行或理解。 2. **代码解析**:注释器会解析代码的结构,包括变量定义、函数调用、循环结构等,并以图形化的方式展示,便于用户直观地理解代码流程。 3. **...

    几种常用的注释 和 利用工具替换注释代码

    例如,你可以选择一段代码,然后使用快捷键或菜单选项将其转换为注释或取消注释。 2. 版本控制工具: Git等版本控制工具在合并代码时,有时会遇到冲突,这时可以使用其内置的命令或第三方工具来帮助解决,这些工具...

    c# 经典源代码(注释)

    注释会解释每段代码的作用,帮助初学者理解代码流程和逻辑控制。 2. **第2章代码**:可能涉及到面向对象编程的基本概念,如类、对象、属性、方法、构造函数以及继承、封装和多态。注释将解释这些概念如何在实际代码...

    俄罗斯方块源代码加详细注释

    《俄罗斯方块源代码加详细注释》是一个非常适合初学者学习的游戏开发资源,它提供了完整的俄罗斯方块游戏的源代码,并且附带了详尽的注释,方便理解每个部分的功能和逻辑。在这个项目中,我们可以深入学习到游戏编程...

    C++代码统计工具,可以统计C代码,行数,注释!

    通常,这类工具会区分单行注释(以`//`开头)和多行注释(以`/* */`包围),并且可能还会考虑预处理器指令(如`#define`和`#if`等)对代码行的影响。 在实际应用中,这种代码统计工具可能会有以下功能: 1. **统计...

    linux0.01 源代码及内核注释

    通过研究Linux 0.01的源代码和注释,开发者和操作系统爱好者可以深入理解Linux的早期发展,以及如何从一个简单的项目演变为全球广泛使用的强大操作系统。这不仅有助于技术学习,也是对开源精神和社区贡献模式的一种...

    注释代码的13条注意事项

    例如,很多团队使用“TODO”来表示一段需要额外工作的代码。 9. Comment code while writing it(写代码的同时,完成注释) 写代码的同时添加注释,因为此时你的思路最为清晰。如果你把注释的任务留到最后,那么你...

    巧用C语言宏定义实现自动注释调试代码

    通过`#define`关键字,我们可以定义一个标识符(宏名)来代表一个常量、表达式或者是一段代码。例如,定义一个简单的宏可以这样写: ```c #define PI 3.14159 ``` 在代码中,每次遇到`PI`时,编译器都会将其替换为...

    eclipse代码注释风格

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它提供了丰富的功能来支持开发者遵循特定的代码注释风格。本文将详细讲解Eclipse中的代码注释风格,以及如何设置和使用这些风格。 一、代码注释类型 Eclipse支持...

Global site tag (gtag.js) - Google Analytics