erlang应该算是面向进程编程的一个语言,erlang从一开始的设计初衷就是解决高并发问题,什么是高并发,说白了,就是很多条进程在同时工作而已(涉及到资源共享),如此说来我们在做erlang的程序的时候一定会遇到同步异步的问题,在面向对象语言里,会遇到回调的问题,就是说我调用你的接口的时候,你也调用了我的接口,这就像我们的这几个行为框架的回调函数!(单纯讨论erlang进程间的同步异步)不过这里不做过多的讨论!
先搞清同步调用,同步调用是一种阻塞调用,如果我在和这个进程通信的时候使用的是同步关系,那么,其他的进程对当前进程和其他进程的通信就会出于阻塞状态,直到返回一个返回值给主动调用的进程,如果未设置超时处理,那么被调用的进程会一直阻塞! 什么时候用同步调用呢?假设我们的一个人物进程,人物身上有战斗力,那么战斗力是RoleInfo里的一个部分,当做状态,这是由很多种方法可以改变战斗力,例如强化武器,镶嵌宝石,升级宠物,那么假设我忽然同事对他进行了操作会怎么样,这个时候我们很难控制处理顺序,应该说是无法控制,结果就是可能两个进程同事使用了统一状态的战斗力然后在重写战斗力状态的时候相互覆盖,最后导致战斗力数值失真,那么这个时候我们就回去使用同步调用这种阻塞的方式!
什么时候我们调用异步调用呢?这个很难说,因为在我的眼里,只要对数据准确性不构成风险,并且不需要及时返回的我都可以使用异步调用,就像创建一个队伍,这个时候要想ets里加入队伍编号,那么我们给队伍这个进程发送一个队伍编号过去,告诉队伍进程加入一个队伍编号即可,我们其实并不关心这个编号加入的先后顺序,因为我们无论如何加入,都不会影响数据的准确性的问题!
关于id,这里的id指的是物品任务的唯一标识,就像班级编号一样的主键,在erlang中特别是ets里,没有像大型数据库那种自动编号的能力,那么完成编号的操作就要有我们自己来处理,打个比方,当我们新建了一个角色,那么我们需要生成一个roleid,这个时候怎么办?一般情况下我们会使用文本操作来处理,在文本中计数,然后使用同步的方法(阻塞调用),每次新角色创建,我们就去调用文本计数的进程将这个数+1,这样就可以保证数据的唯一性,最后再像Menisa中插入或者像地图ets中插入的时候就不会出现相同的编号!
相关推荐
在Erlang和RabbitMQ的异步通信中,主要涉及以下几个概念: - 生产者(Producer):发送消息的应用。 - 消费者(Consumer):接收并处理消息的应用。 - 队列(Queue):存储消息的缓冲区,可以视为生产者和消费者之间...
这种模型降低了同步的复杂性,提高了系统的可扩展性和容错性。 ### 3. OTP(Open Telecom Platform) OTP是Erlang的开源框架,提供了一套标准库和设计模式,用于构建可维护、可扩展的应用。它包括行为(如...
Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于实现应用程序之间的异步通信。 **Erlang** Erlang由瑞典电信设备制造商Ericsson...
4. 并发编程:探讨Erlang进程间的同步和异步通信,以及避免竞态条件和死锁的方法。 5. 容错与恢复:了解Erlang的故障检测和恢复机制,以及如何利用OTP库来实现系统的高可用性。 6. 热代码升级:学习如何在不中断服务...
5. **错误处理和调试**:讨论在CNode中处理Erlang错误和异常的方法,以及如何利用Erlang的调试工具来排查问题。 6. **性能优化**:提供关于如何最大限度地提高CNode与Erlang节点之间通信效率的提示和最佳实践。 7....
Erlang是一种面向并发的、动态类型的编程语言,尤其适合构建高可用性和容错性的分布式系统。在Erlang中,`timer`模块是用于处理延时操作和定时任务的关键工具,它提供了丰富的功能,使得开发者能够优雅地处理时间...
"erlang高级原理和应用PPT" 这个标题表明了文档的主要内容,即关于Erlang编程语言的高级概念和技术在实际应用中的讲解。Erlang是一种面向并发、分布式计算的函数式编程语言,常用于构建高可用性、容错性强的系统,...
Concurrent Programming in ERLANG可能深入讲解如何设计和管理并发进程,以及如何处理进程间的同步和异步通信。 3. **分布式系统**:“面对软件错误构建可靠的分布式系统.pdf”强调了Erlang在构建分布式系统时的...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
- **进程通信**:Erlang中的进程间通信(Inter-Process Communication, IPC)基于消息传递模型,进程之间通过发送和接收消息进行同步,这种异步通信方式避免了阻塞,提高了系统整体性能。 - **分布式计算**:...
【标题】"erlang和rabbitmq.zip" 涉及到的是两个关键技术:Erlang编程语言和RabbitMQ消息队列系统。Erlang是一种并发性极强、容错性出色的函数式编程语言,而RabbitMQ是基于Erlang开发的开源消息代理和队列服务器。 ...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
对于开发者来说,了解这些更新和变化至关重要,因为它们可能影响到现有项目的行为,或者提供新的工具和技术来解决特定问题。学习和掌握Erlang22的新特性有助于提升开发效率和应用质量,特别是在构建高并发、分布式...
**Erlang 高级特性和应用** Erlang 是一种高级编程语言,以其在并发处理、分布式计算和高可靠性方面的出色性能而闻名。在国内外,Erlang 已经被广泛应用于各种场景,如广告平台、社交网络、云计算、网络游戏以及...
同时,Erlang的 OTP库提供了处理分布式系统问题的工具,如进程间通信、错误恢复和监控,确保服务的高可用性。 总的来说,Erlang和Yaws的组合为构建RESTful服务提供了一个强大而灵活的平台,尤其适合需要高并发和...
Erlang与RabbitMQ的关系:RabbitMQ是一个开源的消息代理和队列服务器,广泛用于处理异步任务和实现微服务之间的通信。它基于AMQP(Advanced Message Queuing Protocol)标准,而Erlang则是RabbitMQ的首选开发语言。...
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
5. **语言和库更新**:Erlang的新版本通常会包含语言特性的增强和库的更新,这些改进可能会间接影响到RabbitMQ的性能和功能。 在安装这两个软件时,首先需要下载Erlang的erlang_24.2.exe文件,安装后才能运行...
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...