面向构件的编程目前缺乏完善的方法学支持,构件交互的复杂性带来了很多问题,其中( )问题会产生数据竞争和死锁现象。
A
面向构件的编程一般会涉及以下构件交互问题:(1)异步当前的构件互连标准大都使用某种形式的事件传播机制作为实现构件实例装配的手段。其思想是相对简单的:构件实例在被期望监听的状态发生变化时发布出特定的事件对象;事件分发机制负责接收这些事件对象,并把它们发送给对其感兴趣的其他构件实例;构件实例则需要对它们感兴趣的事件进行注册,因为它们可能需根据事件对象所标志的变化改变其自身的状态。 (2)多线程多线程是指在同一个状态空间内支持并发地进行多个顺序活动的概念。相对于顺序编程,多线程的引入为编程带来了相当大的复杂性。特别是,需要避免对多个线程共享的变量进行并发的读写操作可能造成的冲突。这种冲突也被称做数据竞争,因为两个或多个线程去竞争对共享变量的操作。线程的同步使用某种形式的加锁机制来解决此类问题,但这又带来了一个新的问题:过于保守的加锁或者错误的加锁顺序都可能导致死锁。 (3)多语言支持面向构件编程会涉及多语言问题,在进行不同语言环境涉及互通,最佳状态是编程语言直接支持转发类的构造,则很多问题都能解决,编程的开销也将是最小的,但目前还没有主流的编程语言支持。(4)调用者封装语言支持带来的另外一个好处是接口定义。当构件对外提供一个接口时,可能会涉及两种不同的意图。一方面,构件外部的代码可能会调用这个接口中的操作。另一方面,构件内部的代码可能需要调用实现这个接口的一些操作。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811