加入收藏 | 设为首页 | 会员中心 | 我要投稿 宜春站长网 (https://www.0795zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

设备应如何抵御黑客攻击?

发布时间:2021-02-20 18:25:43 所属栏目:传媒 来源:互联网
导读:计算和边缘计算经常被讨论,但它们在功能上可能有所不同。 云计算,即按需提供数据存储和计算能力的计算机系统,已经存在了几十年。20世纪60年代,计算机科学家约翰麦卡锡(JohnMcCarthy)提出分时共享的概念,并使组织能够同时使用昂贵的主机时,这被描述为互

计算和边缘计算经常被讨论,但它们在功能上可能有所不同。

云计算,即按需提供数据存储和计算能力的计算机系统,已经存在了几十年。20世纪60年代,计算机科学家约翰·麦卡锡(JohnMcCarthy)提出分时共享的概念,并使组织能够同时使用昂贵的主机时,这被描述为互联网发展和云计算基础的重大贡献。从那时起,它经历了许多阶段,为企业提供大型、集中的大数据存储服务器。相反,边缘计算是一种较新的计算模型,它使计算和数据存储更接近需要的设备或数据源。

 

通过这种方式分离障碍,用户线程能够及时地响应事件,即使任务要执行很长时间。这种响应性通常是使用应用时用户体验的关键。无论何时执行一个特定操作(无论该操作是什么) ,应用都会被完全锁住,这样使用起来就不方便了。通过提供一个专用的事件处理线程, GUI可以处理GUI特有的消息(例如调整窗口大小或者重画窗口)而不会中断耗时处理的执行,并且当它们确实影响长任务时会传递相关的消息。

本章你看到了设计并发代码的时候需要考虑的问题。就整体而言,这些问题是很大的,但是当你习惯了"多线程编程",它们就会变得得心应手了。如果这些考虑对你来说很新,那么希望当你看到它们是如何影响多线程代码的具体例子的时候,可以变得更清晰。


 

然, API的细节是不同的,但是结构通常是一样的,等待一个事件,做需要的操作来处理它,然后等待下一个事件。如果你有单线程应用,就会导致长时间运行的任务很难被写入,如8.1.3节描述的。为了确保用户输入能被及时处理, get_event()和process()必须以合理的频率被调用,无论应用在做什么操作。这就意味着要么任务必须定期暂停并且将控制交给事件循环,要么方便的时候在代码中调用get_event()/

process()代码。每一种选择都将任务的实现变得复杂了。

通过用并发分离关注点,你就可以将长任务在一个新线程上执行,并且用一个专用的GUI线程来处理事件。线程可以通过简单的方法互相访问,而不是必须以某种方式将事件处理代码放到任务代码中。清单8.6列出了这种分离的简单概括。

清单8.6从任务线程中分离GUI线程


 

仍然,这是一个最优化问题,因此测量线程数量改变前后的性能时很重要的;最有的线程数量将很大程度上取决于工作的性质和线程等待的时间所占的比例。

取决于应用,它也可能用完空闲的CPU时间而没有运行附加的线程。例如,如果一个线程因为等待I/O操作的完成而被阻塞,那么使用可获得的异步I/O操作就很有意义了。那么当在背后执行I/O操作的时候,线程就可以执行别的有用的工作了。在别的情况下,如果一个线程在等待另一个线程执行一个操作,那么等待的线程就可以自己执行那个操作而不是被阻塞,正如第7章中的无锁队列。在一个极端的情况下,如果线程等待完成一个任务并且该任务没有被其他线程执行,等待的线程可以在它内部或者另一个未完成的任务中执行这个任务。清单8.1中你看到了这个例子,在排序程序中只要它需要的块没有排好序就不停地排序它。

有时它增加线程来确保外部事件及时被处理来增加系统响应性,而不是增加线程来确保所有可得到的处理器都被应用了。

8.4.4 用并发提高响应性

很多现代图形用户接口框架是事件驱动的,使用者通过键盘输入或者移动鼠标在用户接口上执行操作,这会产生一系列的事件或者消息,稍后应用就会处理它。系统自己也会产生消息或者事件。为了确保所有事件和消息都能被正确处理,通常应用都有下面所示的一个事件循环。


(编辑:宜春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读