open-JNI 中多线程创建问题请各位指教

问题描述

JNI 中多线程创建问题请各位指教

大家好,我刚接触JNI开发,遇到一个多线程方面的问题,不知道哪位大神能够帮帮忙。

我在看别人写的代码,里面有一段如下:

Int ret_val = 0;
If((smd_dev_up = open(SMD_DEV_UP, O_RDWR)) <= 0)
{
Return -1;
}

If((smd_dev_down = open(SMD_DEV_down, O_RDWR)) <= 0)
{
Return -1;
}

If(blocking_write)
{
Icotl(smd_dev_up, SMD_PKT_IOCTL_BLOCKING_WRITE, &blocking_write);
Icotl(smd_dev_down, SMD_PKT_IOCTL_BLOCKING_WRITE, &blocking_write);
}

其中SMD_DEV_UP被define成 “/dev/encrypt_voice_TX”
SMD_DEV_DOWN被define成 “/dev/encrypt_voice_RX”
SMD_PKT_IOCTL_BLOCKING_WRITE和SMD_PKT_IOCTL_BLOCKING_WRITE是定义的两个设备控制命令。

问题:
作者得注释说上面的程序段启动了两个线程,但是我不明白哪里启动了两个线程,是两个open函数吗?在linux下启动线程不是一般应该用pthread_create吗?

解决方案

http://blog.csdn.net/booirror/article/details/37778283

解决方案二:

这段代码好像是没有启动线程,但驱动中处理两个 Icotl 时是不是如作者所说启动了相应的线程,这个只有看到驱动的代码才能知道。

时间: 2024-11-03 21:14:17

open-JNI 中多线程创建问题请各位指教的相关文章

java 中 ScheduledExecutorService 创建的多线程和 runnable

问题描述 java 中 ScheduledExecutorService 创建的多线程和 runnable 今天用到用ScheduledExecutorService 做定时任务,发现里面可以做多线程的操作.使用起来也很方便. 直接new 个实例就可以了. ScheduledExecutorService executor = Executors .newScheduledThreadPool(10); for (int i = 0; i < 10; i++) { executor.schedu

在线等水晶报表问题!无法找到清单资源中的报告。请创建项目并再次尝试

问题描述 "/wchGISProject"应用程序中的服务器错误.--------------------------------------------------------------------------------无法找到清单资源中的报告.请创建项目并再次尝试.说明:执行当前Web请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:CrystalDecisions.CrystalReports.Engine.In

mfc-大神们,新年快乐!!!我用MFC编写的串口助手,创建多线程,烦请帮忙看下哪里有问题呢,为什么不能显示

问题描述 大神们,新年快乐!!!我用MFC编写的串口助手,创建多线程,烦请帮忙看下哪里有问题呢,为什么不能显示 数据丢包是因为编辑框显示荒废时间,所以我把编辑框显示放到线程里面,可以不能与接收数据同步正确的显示,还会出现停止运行的错误,狂帮帮忙,看下,呜呜!!!! 解决方案 内存指针的问题,仔细调试下.

Lucene5学习之多线程创建索引

    昨晚睡觉前把多线程创建索引demo写好了,今天早上7点多就起来,趁着劲头赶紧记录分享一下,这样对那些同样对Lucene感兴趣的童鞋也有所帮助.     我们都知道Lucene的IndexWriter在构造初始化的时候会去获取索引目录的写锁writerLock,加锁的目的就是保证同时只能有一个IndexWriter实例在往索引目录中写数据,具体看截图:  而在多线程环境下,光保证只有IndexWriter实例能得到锁还不行,还必须保证每次只能有一个线程能获取到writerLock,Luce

c#窗体-c#windows窗体中多线程问题

问题描述 c#windows窗体中多线程问题 我是要随机在窗体中使某个button的visible为true的,可是老是出现"线程间操作无效: 从不是创建控件"button12"的线程访问它".我是新手,所以请各位大神尽量说得浅显一些. 解决方案 这个我不知道你是不是想在一个线程中控制界面的空间事件啥的,如果是的话,你需要在辅助线程中用invoke(操作控件的方法名,参数)去调用,这样的话就会用主线程去调用该控件了!至于具体怎么用,建议你还是google一下,有很多

Eclipse客户端程序中多线程的使用

简介:本文分析了Eclipse中多线程程序的实现,讨论了在Eclipse客户端程序开发中应用多线程的方 法和要注意的问题,同时也讨论了多线程程序的一些调试和问题解决的方法. Eclipse作为一个开发平台,使用越来越广泛,基于Eclipse Rich Client Platform开发的客户端程序 也越来越多.在当今越来越复杂的应用环境中,我们的客户端程序不可避免的要同时进行多任务的处理. 一个优异的客户端程序都会允许用户同时启动多个任务,从而大大提高用户的工作效率以及用户体验.本 文中我们来谈

浅谈.NET下的多线程和并行计算(九)Winform中多线程编程基础 下

在之前的文章中我们介绍过两种Timer和BackgroundWorker组件,在上文中我们提到过,强烈建议在UI 线程上操作控件,否则很容易产生人品问题.可以想到,上次介绍的两个Timer基于ThreadPool,回调方 法运行于不同于UI线程的新线程上,在这个方法中操作控件需要进行 Invoke或BeginInvoke.其实,还有 第三种System.Windows.Forms.Timer,它可以让回调事件在UI线程上执行,我们来做一个实验比较一下 System.Windows.Forms.T

浅谈.NET下的多线程和并行计算(八)Winform中多线程编程基础 上

首先我们创建一个Winform的应用程序,在上面添加一个多行文本框和一个按钮控件,按钮的事件如下 : Thread.Sleep(1000); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10000; i++) sb.Append("test"); string s = sb.ToString(); textBox1.Text = s; 首先我们可以把这个操作理解为一个非常耗时的操作,它至少占用1秒的时间.

Android在JNI中使用ByteBuffer的方法

  Android在JNI中使用ByteBuffer的方法 本文实例讲述了Android在JNI中使用ByteBuffer的方法.分享给大家供大家参考.具体如下: 一.ByteBuffer 定义 在NIO中,数据的读写操作始终是与缓冲区相关联的(读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区) 缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方