1、Linux系统下的C++编程与Windos下的C++编程有什么区别?请讲的具体些,谢谢!
具体些...编程的区别,先不说编程工具,先说最重要的编译器的问题吧..这个是决定性因素
首先,要说下编译器的事..Linux下面用的是g++,而win下面基本都是VS或者VC++的编译器.两种编译器肯定都认得标准的C++,但是呢,某些细微的语法细节,两者可能稍微不同,比如对变参的定义,还一个例子就是VC里面支持for语句里申请一个变量,这个变量后面可以引用,但是g++就需要加上特定的编译参数才可以编译通过。当然了g++也有些功能是VC不支持的.
然后,前面已经提到了,标准语法都是支持的。如果需要写一个linux和win都通用的C++程序,可能语法需要尽量标准了..
再然后,API的问题.C++标准库和C标准库的函数 ,两者都肯定是支持的。但是系统相关的那部分API可能就需要注意了....比如win下面有waitforsingleobject,Linux下就没这个,它用的是sem_timedwait或者sem_wait等.写通用程序 也必须考虑这些系统API的问题.
再说工具.win下面的IDE有VC,VS,C++ builder等.自带了编辑器...Linux下一般是编辑器和编译分开的,先用vim或者emacs写好程序,然后用g++编译,文件多了就会借助make工具。当然Linux下也有一些IDE,比如codeblocks,anjuta等等开源的IDE,而且这些开源IDE也有win版本。我win下和linux下用的都是开源IDE。
PS:楼上说的共享内存的事情,可以用虚拟内存,就是文件映射的方式来实现,win下面是mapofview,Linux下是mmap。
2、怎样避免timedwait 条件变量唤醒丢失问题
互斥锁一个明显的缺点是他只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,他常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时
3、WaitForSingleObject怎么使用,想用它在windows环境下实现类似linux下的sem_wait功能。
#
4、linux下,用gcc编译c代码,error:undefined reference to sem_wait 怎么解决?谢谢! 请问 在哪儿找到的
#include <semaphore.h>
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
Link with -lrt or -pthread.
自己看最后一句....手册里面写着呢....link with -lrt or -pthread
5、linux信号量的问题
sem_init:初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。
sem_wait:一直阻塞等待直到信号量>0。
sem_timedwait:阻塞等待若干时间直到信号量>0。
sem_post:使信号量加1。
sem_destroy:释放信号量。和sem_init对应。 答案补充 关于各函数的具体参数请用man查看,如man sem_init可查看该函数的帮助
6、万能的论坛,Linux系统一次等待多个信号量怎么解决
sem_init:初始化信号量sem_t初始化候指定信号量初始值及否进程间共享
sem_wait:直阻塞等待直信号量>0
sem_timedwait:阻塞等待若干间直信号量>0
sem_post:使信号量加1
sem_destroy:释放信号量sem_init应 答案补充 关于各函数具体参数请用man查看,man sem_init查看该函数帮助