自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 CBuilder 添加自定义工具:打开当前文件所在的文件夹

CBuilder 添加自定义工具:打开当前文件所在的文件夹方法:  打开CBuilder,选择 菜单: Tools->Configure Tools,弹出 "Tools Option"对话框,    点击右上方的"Add"按钮,弹出"Tool Properties"对话框,    Title文本框填 "Open Containing Folder",Program文本框 填 "

2015-11-21 11:16:29 932

原创 win7 64位机器上 为Notepad++ 配置 vs 编译器

cmd /k chdir /d $(CURRENT_DIRECTORY) & "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat" & "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl" "$(FILE_NAME)"

2015-06-26 20:31:50 621

原创 批处理命令:带参数的字符串替换

批处理命令:带参数的字符串替换@echo offsetlocal enabledelayedexpansionset main_str=hello worldset src=helloset dst=hiecho %main_str%set sub_str=!main_str:%src%=%dst%!echo %sub_str%

2014-11-11 19:23:59 1460

转载 psftp 执行批处理命令

psftp。如需要像批处理文件,直接执行任务。可利用psftp的命令参数。如下所示:"psftp.exe" [email protected] -pw aaa -b"aaa.txt" -bc解释:1) [email protected]:要直接连接目标sftp服务器,aaa为用户名,127.0.0.1为服务器ip。2) –pw aaa:设置密码为aaa。3) -b "aaa.txt" :指定需

2014-11-11 19:14:56 4910

转载 windows批处理命令:递归删除.svn文件

http://blogger.org.cn/blog/more.asp?name=hongrui&id=48277

2014-09-04 12:37:15 849

转载 Win32多线程之我需要锁定数据吗?

很多人不知道如何决定数据是否需要保护,使用同步机制会使程序效率降低,而且它们也不容易使用,但是在某些情况下又非用不可。下面是一些指导方针:   1) 如果你不确定,那么你或许需要一个锁定;   2) 如果你在一个以上的线程中使用同一块数据,那么你必须保护它。我所谓的“使用”,一般而言包括读取,与之作比较,写入,更新,改变,或任何其他操作,只要会用到变量           名称的都算;

2013-12-08 12:42:09 614

转载 Win32多线程之volatile

我相信你一定遇到这样的问题:你把某人的名字和电话号码写到你的通讯录中,数个月之后企图打电话给这个人,却发现资料已经过期了。同样的情况也可能发生在编译器为你产生的程序代码中。   编译器最优化的结果是,设法把常用的数据放在CPU的内部寄存器中,这些寄存器就像你的通讯录一样,数据从寄存器中读出,远比从内存中读出快得多,就好像使你从你的通讯录中读数据,远比从大电话簿中读数据要快得多,当然,如果另一个

2013-12-07 17:52:15 727

转载 Win32多线程之线程优先级层次

线程的优先级层次(Priority Level)是对进程的优先权类别的一个修改,使你能够调整同一个进程内的各线程的相对重要性。一共有七种优先权等级,如下表所示:优先级层次调整值THREAD_PRIORITY_HIGHEST+2THREAD_PRIORITY_ABOVE_NORMAL+1THREAD_PRIORITY_NORMAL

2013-12-07 16:11:45 709

转载 Win32多线程之线程优先级

Win32中优先权的概念,用来决定下一个获得CPU时间的线程是谁,较高优先权的线程必然获得较多的CPU时间。关于优先权的完整讨论其实相当复杂,你可以无分轩轾地给予每一个线程相同的优先权,这可能会使你承担不少麻烦,你也可以明智地使用优先权,使自己能够调整程序的执行次序。例如你可以设定你的GUI线程有较高优先权,使它对于用户的反应能够比较平顺一些,或者你可以改变worker线程的优先权,使它们只在系统

2013-12-07 12:22:08 1311

转载 Win32多线程之通过设立标记来结束线程

Win32标准的做法是在你的程序代码中设立一个标记,利用其值来要求线程结束自己。 这个技术有十分明显的优点,可以保证目标线程在结束之前有安全而一致的状态。其缺点也十分明显:线程需要一个polling机制,时时检查标记值是否为空,以决定是否要结束自己。我们所说的polling机制是指:用手动重置(manual-reset)的event对象。Worker线程可以检查该event对象的状态或是等待它

2013-12-07 11:38:35 647

原创 C++ Builder 常用快捷键

1.选中文本处理:   Ctrl + Shift + I    选中的代码向右移动   Ctrl + Shift + U  选中的代码向右移动   Ctrl  + K -> O   选中文本转换为小写     Ctrl  + K -> N   选中文本转换为大写2.调试:    Ctrl    + F2               Program Reset

2013-12-03 21:09:18 846

转载 Win32多线程之 利用TerminateThread()放弃一个线程

如果当前工作线程尚未完成,而用户希望终止程序,该怎么办呢?利用TerminateThread()放弃一个线程  这正是Win32程序设计的一般性问题。我如何能够安全地关闭任何执行中的线程呢?最明显的答案就是利用TerminateThread(). BOOL  TerminateThread(     HANDLE   hThread,     DWORD   dwExitCod

2013-12-01 12:42:08 3522

原创 C++ 头文件的包含与编译优化

写C++程序时,不要头文件中包含太多其他的头文件,除非绝对必要。 通常我们在头文件中声明类,在cpp文件中实现该类的函数。如果成员函数的参数是别的类的声明或引用,则可能会直接包含该类的声明对应的头文件。举个例子:我定义两个类:A(分别对应的文件A.h,A.cpp)和B(分别对应的文件B.h,B.cpp),,像这种情况下,假如A类A.h中有个成员函数声明:void fun( ...

2013-11-30 19:27:55 1641

转载 Win32多线程之同步机制摘要

Critical Section      Critical Section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是:          1)一个局部性对象,不是一个核心对象;           2)快速而由效率。           3)不能够同时有一个以上的critical section被等待;           4)无法侦测是否已被某个

2013-11-28 22:40:17 497

转载 Win32多线程之Interlocked Variables

同步机制的最简单类型就是使用interlocked 函数,对着标准的32位变量进行操作。这些函数并没有提供“等待”机能,它们只是保证对某个特定变量的存取操作时“一个一个按顺序来”。  考虑一下,如果你需要维护一个32位计数器的“排他性 存取”性质,你该怎么做?你可能会产生一个critical section或一个mutex,拥有它,然后进行你的操作,然后再释放拥有权,一个32位变量的存取操作只

2013-11-28 22:22:37 741

原创 Linux 系统快捷键初学

1.使用TAB键是一个很好的习惯:双击TAB键,        1)若TAB键接在一串指令的第一个字的后面则为命令补全;        2)若TAB接在一串指令的第二个字之后, 则为档案补齐。2.Ctrl + C 中可以中断当前的程序3.Ctrl + D 相当于exit4.上下方向键:提示之前输入的指令

2013-11-27 23:06:36 574

原创 AnsiString 一些函数的用法

1.大写转小写    :  UpperCase(); 2.小写转大写:  LowerCase();3.获得字符串长度:Length();4.查询某个子串:  Pos( const AnsiString& strSub );//返回值大于1表示查询成功(备注:若要查询某个字符是否在AnsiString串中,没有相应的函数,只有将该字符转换成AnsiString串,然后

2013-11-27 18:24:24 1159

转载 Win32多线程之事件(Event Objects)

Win32中最具弹性的同步机制就属events对象了。Event是一种核心对象,  他的唯一目的就是成为激发状态或者未激发状态。这两种状态完全由程序来控制,  不会成为Wait...()函数的副作用。    Event对象之所以大有用途,正是因为它们的状态完全在你的控制之下。Mutexes和semaphores就不一样了。它们的状态会因WaitForSingleObject()之类

2013-11-25 22:20:37 2016

转载 Win32多线程之信号量(Semaphores)

信号量是解决各种生产者/消费者问题的关键要素。这种问题会存在一个缓冲区,可能在同一时间内被读出数据或被写入数据。   Win32中的一个semaphore可以被锁住最多n次,其中n是semaphore被产生时指定的。n常常被设计用来代表“可以锁住一份资源”的线程个数,不过并非单独一个线程就不能够拥有所有的锁定,这没什么理由可言。    理论上可以证明,mutex是semaphore的一种退

2013-11-24 21:45:08 1043

原创 NotePad++ 正则表达式

使用NotePad++进行正则表达式的字符串替换,下面是一些特例:1.将所有行合并为一行  查找目标: \r\n  替换为:空值。2.删除空行  查找目标: ^[ \t]*\r\n  替换为:空值

2013-11-24 18:21:50 593

原创 Linux指令学习

最近开始学习Linux,把常用指令记录下来,以备查看。  1.查看所有进程:           ps  -ef      若要查看指定的指令:    ps  -ef|grep    process_name           2.显示当前目录下的文件: ls     ls   -l       ls    -al     ls   -dl 3.切换到自定目录  cd

2013-11-24 17:11:39 439

原创 UE运行可执行程序

UE通过工具配置来运行可执行程序,具体方法如下:  1.选择 “高级->工具配置”,弹出工具配置对话框;  2.在菜单名称栏里填入名称(根据个人喜好来填);  3.在命令行里填入如下内容:    可执行文件名称(包含路径)参数   %n%e  其中,可执行文件名称如果包含空格,则必须用双引号将整个路径包含,参数是你的可执行文件支持的参数,%n%e代表当前要处理的文件(也

2013-11-24 11:44:14 2366

转载 Win32多线程之互斥器(Mutexes)

Win32的Mutex用途和critical section非常类似,但是它牺牲速度以增加弹性,或许你已经猜到了。mutex 是MUTual EXclusion的缩写。一个时间内只能够有一个线程拥有mutex,就好像同一时间内只能够有一个线程进入同一个critical section一样。  虽然mutex和critical section做同样的事情,但是它们的运作还是有差别的:  1)

2013-11-23 15:42:12 1224

转载 Win32多线程之死锁(DeadLock)

为每一个链表(linked list)准备一个critical section之后(关于链表,请参看”Win32多线程之临界区(Critical Sections)“),我却开始了另一个问题。请看下面这个用来交换两个链表内容的函数:void SwapLists(List  *listA, List * listB){     List   *tmp_list;     Ente

2013-11-23 00:46:07 889

转载 Win32多线程之最小锁定时间

在任何关于同步机制的讨论中,不论是在Win32或Unix或其他操作系统,你一定会一再地听到这样一条规则: 不要长时间锁住一份资源   如果你一直让资源被锁定,你就会阻止其他线程的执行,并把整个程序带到一个完全停止的状态。以critical sectin 来说,当某个线程进入critical section时,该项资源即被锁定。   我们很难定义所谓”长时间“是多少,如果你在网络

2013-11-23 00:18:10 647

转载 Win32多线程之临界区(Critical Sections)

Win32之中最容易使用的一个同步机制就是 critical sections。所谓critical sections意思是指一小块“用来处理一份呗共享的资源”的程序代码。这里所谓的资源,并不是指.res(资源文件)的Windows资源,而是广义上地指一块内存,一个数据结构,一个文件,或任何其他具有“使用之排他性”的东西。也就是说,“资源”每一次(同一时间内)只能够被一个线程处理。  你可能必

2013-11-22 23:37:52 1476

转载 Win32多线程之同步控制

写多线程程序的一个最具挑战性的问题就是,如何让一个线程和另一个线程合作。除非你让它们同心协力。否则必然会出现“race conditions”(竞争条件)和“data corrupton”(数据被破坏)的情况。    在典型的办公室文化中,协调工作是由管理者来执行的。类似的解决方案,也就是“让某个线程成为大家的老板”。当然可以在软件中实现出来,但是每逢它们需要指挥时,就要它们排队等待,其实有着

2013-11-21 22:44:15 648

转载 Win32多线程之标准消息循环

Windows程序中的标准消息循环看起来如下所示:while(GetMessage(&msg, NULL, 0, 0) ){      TranslateMessage(&msg);      DispatchMessage(&msg);}    GetMessage()有点像是特殊版本的WaitForSingleObject(),它等待消息而不是核

2013-11-21 22:27:00 1200

转载 Win32多线程之WaitForMultipleObjects

Win32函数中的WaitForMultipleObjects()允许你在同一时间等待一个以上的对象。你必须将一个由handles组成的数组交给此函数,并指定要等待其中一个对象或是全部的对象,下面就是这个函数的原型:DWORD WaitForMultipleObjects(DWORD nCount,const HANDLE* lpHandles,BOOL bWa

2013-11-21 21:54:37 1773

转载 Win32多线程之被激发的对象(Signaled Objects)

核心对象在“Win32多线程之核心对象”已经讲过,如文件,进程,互斥器(Mutexes)等。这些对象的状态都可能是线程关心的东西。信号量(semaphores)和互斥器(mutexes)可以记录红绿灯状态,文件对象可以告诉我们一个I/O操作何时完成。线程对象则可以告诉我们它何时结束(当线程结束时,它出于激发状态)。         线程可以使用像WaitForSingleobject()这样的

2013-11-20 21:57:23 915

转载 Win32多线程之等待一个线程的结束(WaitForSingleObject)

由于线程停工是操作系统的责任,当然操作系统也有责任让其他线程知道某个线程停工了。   Win32提供了一个名为WaitForSingleObject()的函数。他的第一个参数是个核心对象(如线程)的handle,为了方便讨论,我把即将等待的线程称为线程#1,把正在执行的线程称为线程#2。刚刚说的“线程核心对象”指的是线程#2。  调用WaitForSingleObject()并放置一个“线

2013-11-20 21:31:18 1910

转载 Win32多线程之性能监视器

Windows系统任务管理器中,”性能“属性页中,可以查看CPU和内存的使用情况。它因此成为了一个重要的工具,用以确定我们所写的程序有预期的行为。当你启动一个程序时,如果CPU的利用率达到100%并且在该处停留很久,这就说明你的程序可能有个busy loop。

2013-11-19 23:09:43 764

转载 Win32多线程之线程等待

等待是线程常常需要做的事情。当你读取用户的输入,或是存取磁盘文件时,你的线程必须等待因为磁盘存取速度和用户输入动作的速度是CPU速度的百万(甚至)分之一。等待是线程的一种必要之恶。    等待技术:     1.Win32 Sleep()函数。这个函数要求操作系统终止线程动作,直到渡过某个指定时间之后才恢复。虽然很简单,但好似实际上你却不可能事先知道什么事情要等待多久。即使一个可以快速完成

2013-11-19 22:55:15 997

转载 Win32多线程之后台线程

后台线程和主线程完全分开。它使用不同的数据结构,并且是非交谈式的。任何东西如果要画在屏幕上,都必须送出一个消息给主线程(GUI线程),告诉它去做这件事情。

2013-11-19 22:37:19 735

转载 Win32多线程之设计多线程程序需要注意的问题

1.简单和安全大于复杂和速度;程序与线程的关系越紧密,越容易产生错误并引起race condition。

2013-11-19 22:32:24 577

转载 Win32多线程之多线程设计成功的关键

多线程设计成功的关键是:1.各线程的数据要分离开来,避免使用全局变量;2.不要在线程之间共享GDI对象;3.确保你知道各线程的状态,不要径自结束程序而不等待各个线程的结束;4.让主线程处理用户界面(GUI)。

2013-11-18 22:44:51 646

转载 Win32多线程之微软的多线程模型

Win32说明文件一再强调线程分为GUI线程和worker线程两种。GUI线程负责建造窗口以及处理主消息循。worker线程负责执行纯粹的运算工作,如重新计算或重新编页等等,它们会导致主线程的消息队列失去反应,一般而言,GUI线程绝对不会去做哪些不能够马上完成的工作。   GUI线程的定义是:拥有消息队列的线程,任何一个特定窗口的消息总是被产生这一窗口的线程抓到并处理。所有对该窗口的改变也都应

2013-11-18 22:16:16 799

转载 Win32多线程之错误处理

经验显示,线程的各种相关函数是错误高危险群,而适当的错误处理可以阻止挫败并产生一个比较可信赖的程序。

2013-11-18 22:03:53 603

转载 Win32多线程之主线程

主线程:   程序启动后就执行的那个线程称为主线程(primary thread)。主线程有两个特点:     第一,它不许负责GUI(Graphic User Interface)程序中的主消息循环;     第二,这一线程结束(不论是因为返回或因为调用了ExitThread())会使得程序中的所有线程都被迫结束。程序也因此而结束,其它线程没有机会做清理工作。   这是C r

2013-11-18 21:58:57 930

转载 Win32多线程之ExitThread

VOID ExitThread(DWORD dwExitCode);dwExitCode: 指定该线程的结束代码返回值: 无返回值。  这个函数有点像C runtime library中的exit()函数。因为它可以在任何时候被调用并且绝不会返回。任何代码放在此行之下,保证不会被执行。

2013-11-18 21:45:24 1001

C语言写的带有头结点的链表

这是一个带有头结点的链表,实现了链表的创建,翻转和销毁。并在main()函数中举例测试。

2013-04-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除