Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 图形用户界面的概念&x27;s-集中还是分散_User Interface_Erlang - Fatal编程技术网

User interface 图形用户界面的概念&x27;s-集中还是分散

User interface 图形用户界面的概念&x27;s-集中还是分散,user-interface,erlang,User Interface,Erlang,几个月以来,我一直在学习Erlang,现在是时候做一些基本的GUI了 经过一些快速的研究,我发现有一个有趣的库叫做“wxi”(基于Haskell的Fudgets),它在GUI上使用了不同的方法。没有中央循环,每个小部件处理自己的事件并处理自己的数据 你们怎么看?看起来它在诸如Erlang之类的语言中有点效率,这是一种有趣的方法 William van Doorn在传统的应用程序中,进程(或者线程,如果你想挑剔的话)拥有UI的状态,并通过消息循环处理事件。由于Erlang进程非常轻量级,wxi的方

几个月以来,我一直在学习Erlang,现在是时候做一些基本的GUI了

经过一些快速的研究,我发现有一个有趣的库叫做“wxi”(基于Haskell的Fudgets),它在GUI上使用了不同的方法。没有中央循环,每个小部件处理自己的事件并处理自己的数据

你们怎么看?看起来它在诸如Erlang之类的语言中有点效率,这是一种有趣的方法


William van Doorn在传统的应用程序中,进程(或者线程,如果你想挑剔的话)拥有UI的状态,并通过消息循环处理事件。由于Erlang进程非常轻量级,wxi的方法是传统模型的一个非常合理和自然的扩展


这种方法对UI和应用程序设计具有重要的影响。例如,具有动画、I/O等功能的复杂下载管理器控件可以捆绑为一个完全独立的进程(子进程处理其组件UI片段),通过消息传递与父UI交互。这样的控件甚至可能由于连接问题或内部错误而崩溃,而父控件作为管理者,将指示发生了错误,只需启动该控件的新副本。

是的,但当您有“较重”的线程时,这一概念更难遵循?例如在Java/C中,传统线程是一场灾难,至少有两个原因:1)太多的线程会在上下文切换中淹没CPU;2) 线程共享内存,这使得它们极难正确编程,而Erlang进程是高度隔离的,只能通过消息传递共享信息,这大大减少了系统中的不确定性。大多数UI框架使用一个处理所有UI元素的中央消息循环,因为线程编程是一个昂贵且脆弱的并发模型。