1))
第一:UNIX采用进程间通信机制,而windows采用消息机制
第二:UNIX系统一开始就是为多用户设计的系统,而windows开始只是为单用户设计的操作系统。所以对多用户的支持windows就不及UNIX.
第三:UNIX采用的是用户进程与系统进程在内存中是分开的,用户进程的异常结束不会引起系统进程出现异常。
第四:UNIX采用的是对用户的授权到文件级,第个目录及文件都有rwxrwxrwx的机制。所以安全性要比windows系统好。
第五:执行同样的任务,UNIX比windows需要更少的资源。
略懂一点WINDOWS编程,对其消息循环机制有点了解,用循环语句来接收消息.(听说,很费资源)
对LINUX编程没接触过,我的疑惑就是: LINUX的程序是用什么机制来接收用户的事件而做出反应的?
是不是同样也需要循环? 只是概念术语不一样而已?
在JAVA中,是用事件监听器,但是他也是需要循环监听的吧?
还是性质上是完全不同的? 但是如果不用循环机制,怎么能知道用户在任何时候产生了事件呢?
回答1:肯定有循环机制,大多数精灵进程都每隔一段时间执行某个操作。可以用信号来处理用户的事件。你可以做一个循环放在后台,循环里面加一个sleep()就不那么浪费资源了。
我以前也用过windows的,感觉消息映射和信号差不多。最明显的就是windows和linux下实现异步I/O的时候,一个是用消息,一个是用的信号。
2))
一种是类似于windows中消息循环机制,循环监听。这样貌似比较类似资源,可以通过线程休眠等来解决吧。。另一种是类似于java事件机制,即通过事件注册等,可以通过层层调用来触发事件函数。不用监听了。但是编程起来就稍微复杂点。。
论坛上发现的:在不使用消息的情况下,要作到对事件(简单的如键盘,鼠标)的响应,在底层可以中断,中断回调
怎么通知上层那么多的应用程序呢?回调应该也能做到,但必然相当麻烦了~ 而且,用回调,难免产生很多的回调函数,函数层次也不直观了
消息让这些处理感觉起来简单多了~