在Windows下编写基于Posix标准的多线程程序的方法:
1、进入pthread-win32开源库官网,单击pthread-win32-2-9-1-releasezip进行下载
2、下载后的文件解压缩后,进行二次开发只需要里面的Pre-built2文件夹里面的内容
Pre-built2文件夹下面有:dll(程序运行时需要的动态运行时库),
include(程序编写时利用的头文件),
lib(程序连接过程中需要的静态库)
3、建立code
blocks下的C工程,工程结构,包括mainc测试代码
codeblocks的工程配置,右键工程名选择build
options,配置linker
settings,与search
direction里面的compiler选项
编写mainc,代码如下:
#include
"pthreadh"#include
<stdioh>void
func(void
Parame){
printf("I
am
Child
Thread\n");
return
NULL;}int
main(){
printf("Pthread
Test
Begin\n");
pthread_t
pid;
pthread_attr_t
attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr,
PTHREAD_SCOPE_PROCESS);
pthread_attr_setdetachstate(&attr,
PTHREAD_CREATE_DETACHED);
pthread_create(&pid,
&attr,
func,
NULL);
getchar();
pthread_attr_destroy(&attr);
return
0;}
在生成的exe文件所在同级目录下应该自己添加前文所说的dll文件,否则无法运行。
将你编译好的EXE文件(如aexe)copy到电脑的目录下如c:\aexe
开始->运行->cmd
在命令行中输入cd c:\
c:\>
c:\>aexe
aexe程序就运行起来了。
仔细看下这个头文件inputh 和结构体 input_event 的描述吧,对你应该有帮助;
/
The event structure itself
/
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
里面有关于type、code、value值的介绍;
理解这个之后,你就明白什么时候代表按下鼠标左键,什么时候松开鼠标左键,什么时候按下鼠标右键、什么时候松开鼠标右键;
/
Event types
/
#define EV_KEY 0x01
/
Keys and buttons , code values
/
#define BTN_MOUSE 0x110
#define BTN_LEFT 0x110
#define BTN_RIGHT 0x111
#define BTN_MIDDLE 0x112
#define BTN_SIDE 0x113
#define BTN_EXTRA 0x114
#define BTN_FORWARD 0x115
#define BTN_BACK 0x116
#define BTN_TASK 0x117
java 程序是一次编写,处处运行的.
但实际情况是 一次编写,处处编译.
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的 *** 作系统上正确运行的.
下面是在编写跨平台的Java程序是需要注意的一些事情:
1.编写Java跨平台应用程序时,你可以选择JDK10,11,12或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Java程序只能使用Java核心API包,如果要使用第三方的类库包,则该类库包也要由Java核心包开发完成,否则在发布你的程序的时候还得将支持该Java类库包的JVM发布出去。也就是说,你的程序需要是100%纯Java的。举一个例子,Visual J++ 就不是纯Java的,由Visual J++编写的程序也就不具有平台无关性。
2. 无论你使用的是JDK或其他开发工具,在编译时都要打开所有的警告选项,这样编译器可以尽可能多的发现平台相关的语句,并给出警告。虽然不能保证没有编译时警告错误的程序一定是跨平台的,但含有警告错误的程序却很有可能是非平台无关的。
3. 在程序中使用任何一个方法的时候,要详细察看文档,确保你使用的方法不是在文档中已经申明为过时的方法(Deprecated method),也不是文档中未标明的隐含方法(Undocumented method)。
4.退出Java程序时尽量不要使用javalangSystem的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是我们希望看到的情况。事实上要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。只有在程序非正常退出时,才使用 exit方法退出程序。
5. 避免使用本地方法和本地代码,尽可能自己编写具有相应功能的Java类,改写该方法。如果一定要使用该本地方法,可以编写一个服务器程序调用该方法,然后将现在要编写的程序作为该服务器程序的客户程序,或者考虑CORBA(公共对象请求代理)程序结构。
6. Java中有一个类似于Delphi中的winexec的方法,javalangruntime类的exec方法,作为该方法本身是具有平台无关性的,但是给方法所调用的命令及命令参数却是与平台相关的,因此,在编写程序时要避免使用,如果一定要调用其他的程序的话,必须要让用户自己来设置该命令及其参数。比如说,在windows中可以调用notepadexe程序,在linux 中就要调用vi程序了。
7. 程序设计中的所有的信息都要使用ASCII码字符集,因为并不是所有的 *** 作系统都支持Unicode字符集,这对于跨平台的Java中文软件程序不能不说是一大噩耗。
8.在程序中不要硬性编码与平台相关的任何常量,比如行分隔符,文件分隔符,路径分隔符等等,这些常量在不同的平台上是不同的,比如文件分隔符,在UNIX和 MAC中是“/”,在windows中是“\”,如果要使用这些常量,需要使用javaioFile 类 如获得文件分隔符Fileseparator, 获得路径分隔符:FilepathSeparator;举例:myPath + Fileseparator+myFileName//跨平台、可移植性好
9.在编写跨平台的网络程序时,不要使用javanetInetAddress类的getHostName方法得到主机名,因为不同的平台的主机名格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主机名都要换成IP地址,比如>
是用swing和awt包下的类库就可以做出windows窗体程序,最简单的,创建一个窗体的代码Frame f = new Frame();//创建窗体fsetSize(100,100);//设置窗体大小fsetVisible(true);//显示窗体先试着跑一下,体会一下。多看看这些属性有什么用,你会发现窗口无法关闭,这个涉及到java的事件模型, frameaddWindowListener(new javaawteventWindowListener() { public void windowClosing(WindowEvent e) {Systemexit(0);}});加上这个代码就行了。书的话,建议你看《java程序设计教程》,如果有能力,可以看《java编程思想》。至于你说的那个语言做windows程序好,这里的建议是,如果仅仅限制在界面,做简单的功能,C#很方便。用java易于理解界面的事件模型,C,C++用的是windowAPI最强大,却比较难。
以上就是关于如何在Windows下编写基于Posix标准的多线程程序全部的内容,包括:如何在Windows下编写基于Posix标准的多线程程序、在编译器下编好c/c++程序后怎么让其执行功能,也就是说在没装编译器的电脑上执行、在linux下编c语言的程序,我想判断鼠标的按键状态,该怎么写程序啊HELP啊!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)