当前位置: 首页 > news >正文

闽侯做网站上海中学门户网站登陆

闽侯做网站,上海中学门户网站登陆,国土资源部门网站建设制度,百度搜到网站做纯粹的自己。“你要搞清楚自己人生的剧本——不是父母的续集,不是子女的前传,更不是朋友的外篇。对待生命你不妨再大胆一点,因为你好歹要失去它。如果这世上真有奇迹,那只是努力的另一个名字”。 一、crossbeam_channel 参考 crossbeam_channel - Rust crossbeam_channel…

做纯粹的自己。“你要搞清楚自己人生的剧本——不是父母的续集,不是子女的前传,更不是朋友的外篇。对待生命你不妨再大胆一点,因为你好歹要失去它。如果这世上真有奇迹,那只是努力的另一个名字”。

一、crossbeam_channel

参考 crossbeam_channel - Rust

crossbeam_channel 是一个多生产者多消费者通道,用于消息传递,它是std::sync::mpsc的替代品,具有更多的功能和更好的性能。

二、Channel 类型

通道可以使用两个函数创建:

  1. bounded 函数创建一个容量有限的信道,即一个信道一次可以容纳的消息数量是有限制的。
  2. unbounded 函数创建一个容量无界的信道,即它一次可以容纳任意数量的消息。

这两个函数都返回一个发送方 Sender 和一个接收方 Receiver,它们代表通道的相反两端。

创建一个有界 Channel:

use crossbeam_channel::bounded;// Create a channel that can hold at most 5 messages at a time.
let (s, r) = bounded(5);// Can send only 5 messages without blocking.
for i in 0..5 {s.send(i).unwrap();
}// Another call to `send` would block because the channel is full.
// s.send(5).unwrap();

创建一个无界 Channel:

use crossbeam_channel::unbounded;// Create an unbounded channel.
let (s, r) = unbounded();// Can send any number of messages into the channel without blocking.
for i in 0..1000 {s.send(i).unwrap();
}

三、通过 JNI 使用 Channel

Java 端可以通过 JNI 调用 getSender 获取发送端指针,调用 sendMessage 发送消息到 Rust 中的处理线程,由 Rust 负责处理核心逻辑。

1、新建一个 Rust 库项目

cargo new rust_jni_channel_test --lib

添加依赖包, 

# Cargo.toml[dependencies]
jni = "0.21.1"
lazy_static = "1.5.0"
crossbeam-channel = "0.5.13"
#log = "0.4"
#env_logger = "0.11"[lib]
crate_type = ["cdylib"]

实现 JNI 模块函数, 

// lib.rs#[macro_use]
extern crate lazy_static;use jni::objects::{JClass, JObject};
use jni::sys::{jlong, jobject};
use jni::JNIEnv;
use crossbeam_channel::{unbounded, Sender, Receiver};
use std::thread;lazy_static! {static ref SENDER: Sender<String> = {let (sender, receiver) = unbounded();// Spawn a thread to handle the receiverthread::spawn(move || {for message in receiver.iter() {println!("Received message: {}", message);}});sender};
}#[no_mangle]
pub extern "system" fn Java_com_yushanma_MyResultHandler_getSender(_env: JNIEnv,_class: JClass,
) -> jlong {let sender_ptr = Box::into_raw(Box::new(SENDER.clone())) as jlong;sender_ptr
}#[no_mangle]
pub extern "system" fn Java_com_yushanma_MyResultHandler_sendMessage(mut env: JNIEnv,_class: JClass,sender_ptr: jlong,message: JObject,
) {let sender = unsafe { &*(sender_ptr as *mut Sender<String>) };let message: String = env.get_string(&message.into()).expect("Couldn't get java
http://www.yayakq.cn/news/653848/

相关文章:

  • 广州公司建站目前国际电商平台有哪些
  • 前端代码做招新网站优购物官方网站地址
  • 12306网站开发时间房屋 哪个网站做的最好
  • 乐陵网络推广seo优化苏州seo公司
  • 如何解决网站兼容站长之家官网查询
  • 什么网站上公司的评价最客观wordpress 没关插件
  • 制作公司网站多少钱网站内容建设 内容审核流程
  • 什么网站有项目做网站运营条件
  • 网站建设步骤的论文互联网最好的公司
  • 网站后台代码如何做织梦网站怎么做404页面模板
  • 找考卷做要去哪个网站汕头建站模板厂家
  • 黑龙江建设网网站长春网站制作都找源晟27
  • 盘锦门户网站制作wordpress下拉式菜单
  • 在线购物商城网站建设网站游戏网站开发设计菲律宾
  • 《电子商务网站建设》精品课天津智能网站建设多少钱
  • 手机自助建站平台dw怎么做网站轮播图
  • 电商网站价格监控梅州市城乡建设部网站首页
  • 3d渲染网站建设wordpress 前端构建
  • 哪些做调查问卷的网站怎么屏蔽优酷网站的广告
  • 东莞广告网站建设合肥网站建设久飞
  • 网站建设项目资金申请报告网页设计基础课程设计问题反馈
  • 长沙网红美食网站优化培训机构
  • gl账号注册网站如何做一款app
  • 域名有了怎么制作网站东莞长安网站优化公司
  • 滁州网站seo行业软件公司外包
  • 网站改版前端流程经验静安区网站建设
  • 做网站图片素材在线编辑济南富腾网站建设
  • 东莞做网站费用打电话说帮忙做网站
  • 众筹平台网站建设自己怎么做单页网站
  • 如何搭建一个网站平台宁波网站制作公司排名