搜档网
当前位置:搜档网 › vs2010下配置pthread

vs2010下配置pthread

vs2010下配置pthread
vs2010下配置pthread

在VS2010下,用C语言编写pthread多线程程序的配置

1、从https://www.sodocs.net/doc/1d18083003.html,/pthreads-win32/下载pthread 的windows安装包,我下的是pthread-w32-2-9-1-release.zip,其他版本也可以。解压到pthread-w32-2-9-1-release。

2、打开vs2010,项目->属性->配置属性->VC++目录,包含目录里添加inlude路径,如下图所示,如果刚下载的压缩包放在D盘,则在包含目录那一栏添加:D:\pthread-w32-2-9-1-release\Pre-built.2\inc lude;在库目录那一栏添加:D:\pthrea-w32-2-9-1-release\Pre-built2\lib

3、在链接器—>输入,附加依赖项一栏添加

pthreadVC2.lib;pthreadVCE2.lib;pthreadVSE2.lib;如下图所示。所有设置完成后点确定。

4、打开pthread-w32-2-9-1-release\Pre-built.2\lib\X86,将里面三个*.lib文件复制到你所建立的工程目录中去,这样就设置好了,大功告成。

如下一个简单的程序实例。

#include

#include

#include

#define NUM_THREADS 4

typedef struct{

int threadId;

}threadParm_t;

void *threadFunc(void *parm)

{

threadParm_t *p=(threadParm_t *)parm;

fprintf(stdout,"Hello world from thread%d\n",p->threadId);

pthread_exit((void *)&(p->threadId));

return 0;

}

int main(int argc,char *argv[])

{

int i;

int *res;

res=(int *)malloc(sizeof(int));

pthread_t thread[NUM_THREADS];

threadParm_t threadParm[NUM_THREADS];

for(i=0;i

{

threadParm[i].threadId=i;

pthread_create(&thread[i],NULL,threadFunc,(void *)&threadParm[i]);

}

for(i=0;i

{

pthread_join(thread[i],(void **)&res);

fprintf(stdout,"Thread %d has exited.\n",*res);

}

system("pause");

return 0;

}

运行程序得到如下结果。

多线程编程实例---pthread_join函数详解1

多线程编程实例---pthread_join函数详解1 单处理器上的linux多线程,是通过分时操作完成的; 此时互斥锁的作用,只有在时间足够的情况下才能体现出来,即有时线程内需要延时; 否则只有第一个线程不断解锁和获锁,别的线程在第一个线程执行完前无法获得互斥锁。三pthread_join pthread_exit 函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。一个线程的结束有两种途径,一种是象我们上面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。它的函数原型为: extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__)); 唯一的参数是函数的返回代码,只要pthread_join中的第二个参数thread_return不是NULL,这个值将被传递给thread_return。最后要说明的是,一个线程不能被多个线程等待,否则第一个接收到信号的线程成功返回,其余调用pthread_join的线程则返回错误代码ESRCH。 在这一节里,我们编写了一个最简单的线程,并掌握了最常用的三个函数pthread_create,pthread_join和pthread_exit。下面,我们来了解线程的一些常用属性以及如何设置这些属性。 /////////////////////////////////////////////////////////////////////////// 源程序: /*thread_example.c : c multiple thread programming in linux */ #include

VS2010程序打包、发布详细流程

VS2010程序打包、发布详细流程 一、开发环境 1、操作系统:Windows 7 64位(本机测试,其他系统亦可,无特殊要求) 2、开发软件:Microsoft Visual Studio 2010 3、目标软件:MFC 二、详细流程 1、新建项目 运行VS2010,在VS2010中依次选择“新建项目→其他项目类型→Visual Studio Installer→安装项目”,输入项目名称和路径,如图1所示(此次分别设置项目名称为“MySetupMaker”,项目路径在E盘根目录),点击确定按钮,进入主界面,如图2所示。 图1 新建项目

图2 项目主界面 这时在VS2010中将有三个文件夹: 1)“应用程序文件夹”:表示要安装的应用程序需要添加的文件; 2)“用户的…程序?菜单”:表示应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3)“用户桌面”:表示这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、添加文件 “应用程序文件夹”右键点击,出现下拉菜单,选择“添加 文件(I)…”,将需 要打包的文件全部添加到该目录下,如图3所示。

图3 添加文件到“应用程序文件夹” 此处添加的文件一般是已经编译过文件,一般是应用程序debug目录下的文件。如果需要添加其他文件,亦可以通过这种方式来添加。此外,如果debug 下面有子文件夹,则需要选择“添加 文件夹(F)”,首先在“应用程序文件夹”下创建一个文件夹,然后按照上述方法,添加文件到该文件夹即可,如图4所示。 图4 添加文件夹 备注: 1)此处添加的文件都会在软件安装完成后出现在软件的安装目录; 2)如果需要修改软件图标,则需要将软件的图标文件(.ico)也添加进来。 3、设置系统必备项 在“解决方案资源管理器”中,选择当前创建的项目名称(MySetupMaker),点击右键,选择“属性”,在弹出的“MySetupMaker属性页”中选择“系统必备(P)…”,如图5、图6、图7所示。

pthread_create的使用方法

pthread_create的使用方法.txt人生重要的不是所站的位置,而是所朝的方向。不要用自己的需求去衡量别人的给予,否则永远是抱怨。1:pthread_create 函数的安全使用问题 做过linux多线程开发的人都会用过pthread_create函数,但是很少人会注意到:主线程在使用pthread_create创建线程时,如果pthread_create 函数的第四个参数(指针参数)传入的值会被主线程随时修改时,这时我们的线程从pthread_create 函数的第四个参数获取的值可能就不是我们想要传入的值了。 看看下面代码:在 main 函数的 for 循环中创建10个线程;每创建一个线程时都把循环变量 i 的值通过 pthread_create 函数的第四个参数传入线程函数中;但是线程获取的值可能不并不是我们想传入的值。 #include #include void * threadFunc( void * pm_iPthreadId ) { unsigned int iId = * ( unsigned int * ) pm_iPthreadId; printf( "### No.%d pthread start exec; pthread id = %u !\n", iId, pthread_self() ); time_t iStartTime = time( NULL ); while(1) { time_t iTempTime = time( NULL ); if ( iTempTime - iStartTime > 2 ) { printf( "$$$ NO.%d pthread cirle exec !\n", * ( unsigned int * ) pm_iPthreadId ); iStartTime = time( NULL ); } } } int main() { pthread_t * pthreadId; pthreadId = new pthread_t[10]; for( unsigned int i = 0; i < 10; i++ ) { int iRet = pthread_create( pthreadId + i, NULL, threadFunc, &i ); if ( iRet == 0 ) { printf( "@@@ create No.%d pthread success; pthreadId = %u !\n", i, pthreadId + i );

C#windows应用程序打包(VS2010+SQLServer2008) - SQL Server(mssql)数据库栏目 - 红黑联盟

C#windows应用程序打包(VS2010+SQLServer2008) 2014-07-09 0 个评论 来源:飘渺菌 收藏 我要投稿作者 : 飘渺菌 原文地址:https://www.sodocs.net/doc/1d18083003.html,/qingdujun/article/details/37563661 开发环境:VS2010+SQL Server 2008 操作系统:win7_32bit 旗舰版 开发语言:C# 项目名称:学生寄宿管理系统 下面开始介绍:如何给windows应用程序打包? 第一步: 打开VS2010,打开你要打包的项目,然后右击"解决方案",”添加“,"新建项目",弹出如下图所示界面: 点击”安装和部署“左边的三角形,选择下面的”Visual studio Installer“,再选择”安装项目“,同时将下面的命名改为”Setup“点击确定。 第二步: 点击解决方案里面生成的”Setup“,将属性中的ProtectName改为”学生寄宿系统 V1.0 “(你的

项目名字) 第三步: 右击解决方案里面的”Setup“,然后再选择”属性“。弹出属性页界面如下第二张图: 再点击里面的系统必备。 重要一点:勾选"从与我的应用程序相同的位置下载系统必备组件(D)",其实意思就是说你勾选后,生成安装项目时,在你安装项目的路径下,会有你在系统必备组件列表中勾选的组件.(系统自动完成,这一点还不错,不需要你自己去下载组件) 1)、Windows Installer 3.1(必选) 2)、.NET Framework 3.5 (可选)参考最后说明 3)、Crystal Report Basic for Visual Studio2008(x86,x64) (可选) 项目中用到了水晶报表就需要勾选此项

vs2010中ode配置、使用(open dynamics engine)

1、下载源文件 其官方网站是: https://www.sodocs.net/doc/1d18083003.html, 下载地址为:https://www.sodocs.net/doc/1d18083003.html,/projects/opende/ 最新版本为ode-0.12 下载后为一个rar加压文件,加压到C盘下ode-0.12文件夹下 2、通过premake生成示例程序 C:\ode-0.12\build 目录下有个premake.exe 只能通过cmd控制台运行,cmd控制台切换到build目录下。 输入命令输入“premake4 --with-demos --with-tests vs2008” 来生成 Microsoft Visual Studio 2008 的工程示例文件。 该示例文件可以直接运行,ode.sln 查看ode示例程序、运行。

3、自己新建ode 项目(使用ode) 新建win32项目,命名为ode18_3 4、ode相关头文件加入工程文件中头文件 属性->配置属性->C/C++ ->常规->附加包含目录: C:\ode-0.12\include C:\ode-0.12\ode\src C:\ode-0.12\ode\demo //运行demo程序引入demo程序使用的包,自己编程时可以不引用。 C:\ode-0.12 为ode 的解压目录,将目录中的文件包含到工程中。 2、引入ode源文件中加入#include 自己编码的时候引用。 3、引入ode 依赖的库文件ode_doubled.lib, drawstuffd.lib 属性->配置属性->链接器->输入->附加依赖项: C:\ode-0.12\lib\DebugDoubleDLL\ode_doubled.lib C:\ode-0.12\lib\DebugDoubleDLL\drawstuffd.lib user32.lib winmm.lib gdi32.lib opengl32.lib

ns3和openflow模块安装经验与问题详解

NS3网络仿真器安装详解 1. NS3安装预先设置Ubuntu环境,执行在终端以下命令 sudo apt-get install gcc g++ python sudo apt-get install mercurial sudo apt-get install bzr sudo apt-get install gdb valgrind sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl sudo apt-get install flex bison sudo apt-get install g++-3.4 gcc-3.4 sudo apt-get install tcpdump sudo apt-get install sqlite sqlite3 libsqlite3-dev sudo apt-get install libxml2 libxml2-dev sudo apt-get install libgtk2.0-0 libgtk2.0-dev sudo apt-get install vtun lxc sudo apt-get install uncrustify sudo apt-get install doxygen graphviz imagemagick sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev sudo apt-get install libboost-signal-dev libboost-filesystem-dev 2. 安装NS3 2.1下载NS3安装包并解压,官网上(https://www.sodocs.net/doc/1d18083003.html,)下载的 3.21版本格式为ns-allinone-3.21.tar.bz2在终端运行以下命令进行解压缩: bzip2 -d ns-allinone-3.21.tar.bz2 tar xvf ns-allinone-3.21.tar 2.2命令终端进入解压缩文件夹执行命令 ./build.py 2.3 进入ns- 3.21目录使用waf构建 ./waf -d optimized configure ./waf -d debug configure

VS2010发布、打包安装程序超全超详细

1、 在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 9、应用程序文件夹中点右键添加文件:表示添加要打包的文件; 添加的文件一般是已经编译过应用程序的debug目录下的文件;

如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 10、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备: 然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图” “启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0; 这样.NET Framework 2.0上创建的项目在安装时,就不会安装.NET3.5或其他版本, 也不会重启(解决.NET 2.0 创建的项目,安装.NET FrameWork3.5的问题)。 11、设置安装文件的目录(路径): 创建的项目名称(setup1)点击左键(不是右键),在属性中设置参数如下图:

vs2010下配置OpenCV

以下配置方法仅属于个人见解;若有什么不对的地方请指教啊。 在完成每一步骤后,记住点击?确定?,以确保你的设置成功。 在某些步骤中注意要在Debug 和Release 分别进行配置。 1.首先是下载VS2010并安装,这里不作赘述;(安装目录: D:\\Program Files\Microsoft Visual Studio 10.0) 2.下载并安装OpenCV,我的版本是2.1(安装目录为D:\Program Files\OpenCV2.1)注意将路径添加至Path中 3.下载并安装CMake,下载版本为Windows(Win32 Installer),安装目录为D:\Program Files\CMake 2.8 4.运行cmake-gui(D:\Program Files\CMake 2.8\bin),设置路径为OpenCV安装路径(本文档假定安装位置为:D:\Program Files\OpenCV2.1),并创建子目录D:\Program Files\OpenCV2.1\vs2010,用于存放编译结果。将数据填入指定文本框中

5.点击?Configure?,在弹出对话框中选中Visual Studio 10.0;单选框中选项选择程序默认的;然后点击Fnish;程序会自动完成 ?Configure Done?; 6.然后点击?configure?,接着点击?Generate?。程序完成?Generate Done?。 7.完成以上步骤后,将在D:\Program Files\OpenCV2.1|vs2010目录下生成OpenCV.sln的VC Solution File,接着请用vs2010打开OpenCV.sln,完成以下操作:

NS3安装

Compiling build/src/lte/bindings/https://www.sodocs.net/doc/1d18083003.html, 首先需要安装VMware player将Ubuntu安装上 Ubuntu汉化 Root 执行命令su passwd root Enter new UNIX password: (在这输入你的密码,也就是当前用户的密码)Retype new UNIX password: (确定你输入的密码) passwd: password updated successfully OK,到这里,你的root密码已经完成修改 执行su - root 输入上面刚才设定的密码之后,就root了 1.在ubuntu1 2.04中安装ns 3.17,首先要安装一下各种。 sudo apt-get install gcc g++ python sudo apt-get install gcc g++ python python-dev sudo apt-get install mercurial sudo apt-get install bzr sudo apt-get install gdb valgrind sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl sudo apt-get install flex bison libfl-dev sudo apt-get install g++ gcc sudo apt-get install tcpdump sudo apt-get install sqlite sqlite3 libsqlite3-dev sudo apt-get install libxml2 libxml2-dev sudo apt-get install libgtk2.0-0 libgtk2.0-dev sudo apt-get install vtun lxc sudo apt-get install uncrustify sudo apt-get install doxygen graphviz imagemagick sudo apt-get install texlive texlive-extra-utils texlive-latex-extra

vs2010下配置pthread

在VS2010下,用C语言编写pthread多线程程序的配置 1、从https://www.sodocs.net/doc/1d18083003.html,/pthreads-win32/下载pthread 的windows安装包,我下的是pthread-w32-2-9-1-release.zip,其他版本也可以。解压到pthread-w32-2-9-1-release。 2、打开vs2010,项目->属性->配置属性->VC++目录,包含目录里添加inlude路径,如下图所示,如果刚下载的压缩包放在D盘,则在包含目录那一栏添加:D:\pthread-w32-2-9-1-release\Pre-built.2\inc lude;在库目录那一栏添加:D:\pthrea-w32-2-9-1-release\Pre-built2\lib 3、在链接器—>输入,附加依赖项一栏添加 pthreadVC2.lib;pthreadVCE2.lib;pthreadVSE2.lib;如下图所示。所有设置完成后点确定。 4、打开pthread-w32-2-9-1-release\Pre-built.2\lib\X86,将里面三个*.lib文件复制到你所建立的工程目录中去,这样就设置好了,大功告成。 如下一个简单的程序实例。 #include #include #include #define NUM_THREADS 4

typedef struct{ int threadId; }threadParm_t; void *threadFunc(void *parm) { threadParm_t *p=(threadParm_t *)parm; fprintf(stdout,"Hello world from thread%d\n",p->threadId); pthread_exit((void *)&(p->threadId)); return 0; } int main(int argc,char *argv[]) { int i; int *res; res=(int *)malloc(sizeof(int)); pthread_t thread[NUM_THREADS]; threadParm_t threadParm[NUM_THREADS]; for(i=0;i

打包过程vs2010(包含卸载功能、生成一个exe文件)

1、在vs2010 选择“新建项目”----“其他项目类型”----“Visual Studio Installerà“安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的…程序?菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data

然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备 然后选择.NET的版本,和Windows Installer3.1(可选项)

选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork 组件;但是安装包会比较大。 VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”à“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

多线程编程实例

编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。 函数pthread_create用来创建一个线程,它的原型为:extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg)); 第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参数是线程运行函数的起始地址,最后一个参数是运行函数的参数。当创建线程成功时,函数返回0,若不为0则说明创建线程失败。 函数pthread_join用来等待一个线程的结束。函数原型为:extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。 一个线程的结束有两种途径,一种是象我们上面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。它的函数原型为: extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));

最简单的线程程序: /* example.c*/ #include #include void thread(void) { int i; for(i=0;i<3;i++) printf("This is a pthread.\n"); } int main(void) { pthread_t id; int i,ret; ret=pthread_create(&id,NULL,(void *) thread,NULL); if(ret!=0){ printf ("Create pthread error!\n"); exit (1); } for(i=0;i<3;i++) printf("This is the main process.\n"); pthread_join(id,NULL); return (0); } 输出是什么样子?

vs打包方案

.net打包/C#WinFrom程序打包/图解.net打包/.net安装部署图解/VS2008项目的安装与部署图解 一、应用程序文件夹操作 1、新建一个安装项目,起名“测试打包” 这里要记住路径了,不然,打完了找不着安装包在哪里,可就说不过去了,呵呵! 2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹-->添加-->文件夹

这里的作用就是好管理,重启一下名字,这里我就叫它“测试打包系统” 3、在“测试打包系统”文件夹上右键-->添加-->项目输出 下一步:添加主输出 一般这个就够了,当然你还有别的资源的话就要添加上去了! 4、接下来在“应用程序文件夹”下依些建几个文件夹,我建了3个

Images里我放的是图片,2个ICO和1个BMP,后面会用到! Unit放置卸载的文件,这里你记住有这么回事就行了,下面专门会讲这个文件是怎么来的! 最下面的一个就不用多说了,上面操作过了,放了一个主输出文件! 到这里一个简单的打包项目已完成了,呵呵,右键生成一下,在项目目录中找着安装文件就可以运行安装的用了! 但是这样的安装包,你安装完一不小心还找不着安装在哪里去了,呵,因为这样只有在安装文件夹里有东东,而我们所熟悉的开始菜单和桌面上没东西啊!不方便,那就给加上去吧! 二、开始菜单-->程序-->里添加内容操作 1、点“用户的“程序”菜单”,新建一个文件夹!步骤和前面一样,不细说!

我起名叫“测试打包系统” 2、在中间的桌口中(上图的名称下面部分位置啊),右键-->创建新的快捷方式,出现下面的界面 选择“应用程序文件夹”里面的,也就是我们添加的主输出文件! 3、更改新添加"快捷方式的属性" 看到了吧,这里我更改了一下name和Icon,更改Icon,看到上图中的浏览了吧,打着前面Images下面的ICO文件就可以了!

VS2010下配置Openmesh+openGL

VS2010下配置Openmesh+openGL 一.配置OpenGL 1首先,下载glut.rar文件,这个网上搜一下都能够找到,亦可以从opengl官网下载,https://www.sodocs.net/doc/1d18083003.html,/resources/libraries/glut/glutdlls37beta.zip。 2.解压后可以得到5个文件:glut.h、glut.dll、glut.lib、glut32.lib、glut32.dll。然后, ○1把glut.h文件放在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下面; ○2把glut.lib、glut32.lib两个文件放在静态函数库所在的文件夹中,也就是说这两个文件要放到自己的VS2010安装目录下的VC\lib文件中。我的vs2010安装目录是E:\vs2010\VC\lib; ○3最后把glut.dll、glut32.dll文件放在C:\windows\system32文件夹下面. 三步做完openGL的文件配置就完成了。 二.配置Openmesh 1. 在网站上下载了 OpenMesh- 2.0-RC4(这个谷歌下,网上很多,最好下载最新版本的)。 2.安装openmesh后,openmesh安装目录下的lib文件夹里面会有两个库文件 OpenMeshCore.lib 和OpenMeshTools.lib。 3.为了不设置依赖的编译目录,将这两个文件放到VS的库文件里E:\VS2010\VC\lib中。 4.打开VS2010,新建一个工程,命名如test1,然后设置test1工程的依赖项,工程属性->连接器->输入-》附加依赖项-》加入如上两个lib就可以了。在这里要说明一下,如果从VS2010的工具—属性里面设置附加依赖属性是不行的,所以我们要自己建一个工程,然后设置这个工程的附加依赖属性,设置的地方有两处,如下: ○1项目—test1属性—VC++目录 主要设置的是包含目录和库目录,文件路径设置如图,lib和include文件夹都在自己的openmesh安装目录下。 ○2项目—test1属性—链接器—输入 将openmesh安装目录下lib文件中的这两个文件(如图)的名字复制粘贴到这里来就可以了,至此openmesh文件配置完成。

linux下的多线程编程常用函数

Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux所特 有的系统调用,他的使用方式类似fork. int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg); 返回值:若是成功建立线程返回0,否则返回错误的编号 形式参数: pthread_t *restrict tidp 要创建的线程的线程id指针 const pthread_attr_t *restrict attr 创建线程时的线程属性 void* (start_rtn)(void) 返回值是void类型的指针函数 void *restrict arg start_rtn的行参 进行编译的时候要加上-lpthread 向线程传递参数。 例程2: 功能:向新的线程传递整形值 #include #include #include void *create(void *arg) { int *num; num=(int *)arg; printf("create parameter is %d \n",*num); return (void *)0; } int main(int argc ,char *argv[]) { pthread_t tidp; int error; int test=4; int *attr=&test; error=pthread_create(&tidp,NULL,create,(void *)attr); if(error) { printf("pthread_create is created is not created ... \n"); return -1; } sleep(1); printf("pthread_create is created ...\n");

逆变器操作说明和故障处理

一逆变器原理介绍 1.1逆变(invertion):把直流电转变成交流电的过程。 逆变电路是把直流电逆变成交流电的电路。当交流侧和电网连结时,为有源逆变电路。变流电路的交流侧不与电网联接,而直接接到负载,即把直流电逆变为某一频率或可调频率的交流电供给负载,称为无源逆变。 逆变桥式回路把直流电压等价地转换成常用频率的交流电压。逆变器主要由晶体管等开关元件构成,通过有规则地让开关元件重复开-关(ON-OFF),使直流输入变成交流输出。当然,这样单纯地由开和关回路产生的逆变器输出波形并不实用。一般需要采用高频脉宽调制(SPWM),使靠近正弦波两端的电压宽度变狭,正弦波中央的电压宽度变宽,并在半周期内始终让开关元件按一定频率朝一方向动作,这样形成一个脉冲波列(拟正弦波)。然后让脉冲波通过简单的滤波器形成正弦波。 1.2 IGBT的结构和工作原理 1.2.1 IGBT的结构 IGBT是三端器件,具有栅极G、集电极C和发射极E。IGBT由N沟道VDMOSFET 与双极型晶体管组合而成的,VDMOSFET多一层P+注入区,实现对漂移区电导率进行调制,使得IGBT具有很强的通流能力。图1-1为IGBT等效原理图及符号表示 图1-1 IGBT等效原理图及符号表示 1.2.2IGBT的工作原理 IGBT的驱动原理与电力MOSFET基本相同,是一种场控器件。 其开通和关断是由栅极和发射极间的电压U GE决定的。

当U GE为正且大于开启电压U GE(th)时,MOSFET内形成沟道,并为晶体管提供基极电流进而使IGBT导通。 当栅极与发射极间施加反向电压或不加信号时,MOSFET内的沟道消失,晶体管的基极电流被切断,使得IGBT关断。 电导调制效应使得电阻R N减小,这样高耐压的IGBT也具有很小的通态压降。 1.3逆变电路介绍 1.3.1逆变产生的条件为 1,要有直流电动势,其极性须和晶闸管的导通方向一致,其值应大于变流器直流侧的平均电压。 2要求晶闸管的控制角α>π/2,使U d为负值。 两者必须同时具备才能实现有源逆变。 逆变运行时,一旦发生换相失败,外接的直流电源就会通过晶闸管电路形成短路,或者使变流器的输出平均电压和直流电动势变成顺向串联,由于逆变电路的内阻很小,形成很大的短路电流,这种情况称为逆变失败,或称为逆变颠覆。 逆变失败的原因 1触发电路工作不可靠,不能适时、准确地给各晶闸管分配脉冲,如脉冲丢失、脉冲延时等,致使晶闸管不能正常换相。 2晶闸管发生故障,该断时不断,或该通时不通。 3交流电源缺相或突然消失。 4换相的裕量角不足,引起换相失败 为了防止逆变失败,不仅逆变角β不能等于零,而且不能太小,必须限制在某一允许的最小角度内。 1.3.2逆变电路基本的工作原理 图1-2单相逆变电路原理图

POSIX thread

POSIX 线程详解 1 POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins 向您精确地展示在编程中如何使用线程。其中还涉及大量幕后细节,读完本系列文章,您完全可以运用POSIX 线程创建多线程程序。 线程是有趣的 了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。 那么为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局变量。如果曾用 fork() 编写过重要代码,就会认识到这个工具的重要性。为什么呢?虽然 fork() 允许创建多个进程,但它还会带来以下通信问题: 如何让多个进程相互通信,这里每个进程都有各自独立的内存空间。对这个问题没有一个简单的答案。虽然有许多不同种类的本地 IPC (进程间通信),但它们都遇到两个重要障碍: 强加了某种形式的额外内核开销,从而降低性能。 对于大多数情形,IPC 不是对于代码的“自然”扩展。通常极大地增加了程序的复杂性。 双重坏事: 开销和复杂性都非好事。如果曾经为了支持 IPC 而对程序大动干戈过,那么您就会真正欣赏线程提供的简单共享内存机制。由于所有的线程都驻留在同一内存空间,POSIX 线程无需进行开销大而复杂的长距离调用。只要利用简单的同步机制,程序中所有的线程都可以读取和修改已有的数据结构。而无需将数据经由文件描述符转储或挤入紧窄的共享内存空间。仅此一个原因,就足以让您考虑应该采用单进程/多线程模式而非多进程/单线程模式。 线程是快捷的 不仅如此。线程同样还是非常快捷的。与标准 fork() 相比,线程带来的开销很小。内核无需单独复制进程的内存空间或文件描述符等等。这就节省了大量的 CPU 时间,使得线程创建比新进程创建快上十到一百倍。因为这一点,可以大量使用线程而无需太过于担心带来的 CPU 或内存不足。使用 fork() 时导致的大量 CPU 占用也不复存在。这表示只要在程序中有意义,通常就可以创建线程。 当然,和进程一样,线程将利用多 CPU。如果软件是针对多处理器系统设计的,这就真的是一大特性(如果软件是开放源码,则最终可能在不少平台上运行)。特定类型线程程序(尤其是 CPU 密集型程序)的性能将随系统中处理器的数目几乎线性地提高。如果正在编写 CPU 非常密集型的程序,则绝对想设法在代码中使用多线程。一旦掌握了线程编码,无需使用繁琐的 IPC 和其它复杂的通信机制,就能够以全新和创造性的方法解决编码难题。所有这些特性配合在一起使得多线程编程更有趣、快速和灵活。 线程是可移植的 如果熟悉 Linux 编程,就有可能知道 __clone() 系统调用。__clone() 类似于 fork(),同时也有许多线程的特性。例如,使用 __clone(),新的子进程可以有选择地共享父进程的执行环境(内存空间,文件描述符等)。这是好的一面。但 __clone() 也有不足之处。正如__clone() 在线帮助指出: “__clone 调用是特定于 Linux 平台的,不适用于实现可移植的程序。欲编写线程化应用程序(多线程控制同一内存空间),最好使用实现 POSIX 1003.1c 线程 API 的库,例如 Linux-Threads 库。参阅

vs2010发布、打包安装程序(超全超详细)

1、在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ “安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中;

把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性 选择系统必备:

然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

Tomcat服务器的安全配置

Tomcat 服务器的安全配置办法 tomcat 是一个开源Web 服务器 ,基于Tomcat 的Web 运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web 站长的青睐。不过, 在默认配置下其存在一定的 安全 隐患,可被恶意攻击。另外,由于其功能比较单纯需要我们进一步地进行设置。本机将从 安全 和功 tomcat 是一个开源Web 服务器,基于Tomcat 的Web 运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web 站长的青睐。不过, 在默认配置下其存在一定的安全隐患,可被恶意攻击。另外,由于其功能比较单纯需要我们进一步地进行设置。本机将从安全和功能两方面谈谈基于Tomcat 的 Web 服务器的部署,希望对大家有所帮助。 环境描述 OS :Windows Server 2003 IP :192.168.1.12 Tomcat :6.0.18 1、安全测试 (1).登录后台 在Windows Server 2003上部署Tomcat ,一切保持默认。然后登录Tomcat 后台,其默认的后台地址为: http://192.168.1.12:8080/manager/html 。在浏览器中输入该地址,回车后弹出登录对话框,输入默认的用户名admin ,默认的密码为空,成功登录后台。(图 1)

(2).获得Webshell 在Tomcat的后台有个WAR file to deploy模块,通过其可以上传WAR文件。Tomcat可以解析WAR文件,能够将其解压并生成web文件。我们将一个jsp格式的webshell 用WinRar打包然后将其后缀改名为WAR(本例为gslw.war),这样;一个WAR包就生成了。最后将其上传到服务器,可以看到在Tomcat的后台中多了一个名为/gslw的目录,点击该目录打开该目录jsp木马就运行了,这样就获得了一个Webshell。(图2)

相关主题