erlang中的message发送的几个事实

2024-05-31 15:08

本文主要是介绍erlang中的message发送的几个事实,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个世界是并行的,我们每个人都有自己的思想,你没法知道我想什么,只能我告诉你。

 

在erlang的世界里,每个进程有自己的状态(其实就是那些传来传去的参数,不考虑进程字典这个不干净的东西好了),无法直接将一个进程的状态分享给其他进程,只能通过消息,发送到对方的邮箱里去,看他啥时候有空处理一下。

 

erlang里发消息很简单   PID ! Message,就可以了,PID是一种数据类型,就叫process identifier,可以通过几种手段获得:

*self(),取得当前进程的PID

*通过spawn,spawn_link获得(注:spawn总是会成功,总是会返回一个PID)

*通过pid/3来够在,似乎出了在shell里其他地方没法用啊?

*别人给你一个PID

*或者,这个PID有别名(通过register(Alias,PID)注册)

 

一旦得到了PID,就可以直接发消息给他,不管他在天涯海角,不管他或者还是死亡,erlang里消息的几个事实:

*总是能发送成功,不管PID是否存在

*发送消息是异步的,立即返回

*PID ! Message,是一个合法的表达式,返回值是Message,因此往多个进程发同样的消息可以:P1!P2!P3P4!Message

*同一个进程发给另一个进程的消息保证其发送顺序

 

消息接收的过程:

*当有新的消息进来时才触发以下操作

*receive语句会从mailbox里拿出第一条消息(最老的)

*按顺序进行match,如果match上了,将从mailbox里把这条消息拿掉,然后执行pattern后的语句

*如果没有match,就执行下一条match

*如果所有pattern都没match,就取下一条消息

*如果消息都没有match任何一个pattern,这些消息将按按原来的顺序放回mailbox

 

 

 

这篇关于erlang中的message发送的几个事实的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018270

相关文章

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修