Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux中多线程的实现

Linux中多线程的实现

所谓的多线程就是多个函数同时执行。一般将线程表述为一个api加一个函数。线程函数有特定的格式要求,以便系统自动调用。Windows进程包含多个线程,进程是分配资源(包括CPU)的最小单位,而线程是调度的最小单位。Linux中的进程和线程关系应该和Windows一样,而且在Linux中创建多线程程序和Windows一样简单。下面是一个多线程实例,程序流程是这样的:进程启动,创建一个线程线程和主进程都每个一段时间输出一些信息,二者并发执行下面的代码编译于Ubu...
C语言的神奇语法

C语言的神奇语法

C语言的语法较其他语言来说比较复杂。这里举几个我碰到过的例子,证之。例子1int a[10];printf( "%d-%d", a, & a);猜测:这里的&会被编译器忽略。a在内存中是不存在的,内存中的是a[0] a[1]....a[9],上述printf打印的a在编译的时候就被替换成了a在内存中的地址。因为a是概念上的,而非内存中的,所以自然不存在地址,也就无法对它使用取址符。但是编译器很聪明,会忽略&。例子2struct a{...
用Python脚本整理我的音乐

用Python脚本整理我的音乐

我的所有音乐都放在一个music文件夹里面,包括QQ音乐、酷狗、千千下载的音乐,和他们的缓冲文件等,比较杂乱。我想把所有音乐文件拷出来,但是因为里面有上百个文件夹,音乐文件分布很杂乱,工作量太大,所以就写了一个Python脚本来处理。下面是脚本代码:# 功能:将本程序所在目录下的所有的音乐文件移动到一个指定的文件夹中import osimport shutil# 配置storeDir = "G:\music"if os.path.exists( store...
Linux程序移植到Android上

Linux程序移植到Android上

序言:由于本人还是比较偏重于先说明原理在说明实际操作步骤,要知其然更要知其所以然,如下图所示:传统的linux系统中的程序基本都依赖于glibc(至于什么是glibc可以百度去),而右边AOSP(Android Open-Source Project)的程序基本都是依赖于Bionic(由谷歌公司开发类库,用来替代glibc)。这就决定了要想移植linux上的程序到android上就必须解决这个依赖的类库不同的问题。一般情况下,有两种方法。一个就是将程序静态...
Linux下用arm-none-linux-gnueabi交叉编译arm内核模块

Linux下用arm-none-linux-gnueabi交叉编译arm内核模块

前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解。水平有限,请谅解~1.安装arm-none-linux-gnueabi交叉编译器很多时候我们需要编译运行在其他平台的文件,而没有条件在目标平台上直接编译时,我们就用到了交叉编译。顾名思义就是在现有平台编译目标平台的程序。在Linux编译arm平台的内核模块时,大多采用arm-none-linux-gnueabi交叉...
C#基于Linq和反射实现数据持久化框架Xml4DB

C#基于Linq和反射实现数据持久化框架Xml4DB

我们知道目前大部分的数据库都是关系型数据库, 所谓关系型数据库,就是指建立在关系模型 基础之上的数据库系统,如Oracle、SQL Server、Access、MySQL等。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。一个偶然的机会我接触到了DB4O,它是一个完全面向对象的开源数据库,它的出现完全颠覆了传统的数据库在人们心中的形象,因为传统的数据库需要在数据体、实体之间转换,而且需要映射文件提供映射关系。正...
Android开发实践:用脚本编译Android工程

Android开发实践:用脚本编译Android工程

一般情况下,我们都是使用Eclipse+ADT插件或者Android studio软件来编译Android工程的,其实,Eclipse或者Android studio仅仅是将一些编译命令封装到可视化界面里而已,通过shell脚本、ADT附带的一些命令以及Ant工具,我们完全可以将Android工程的编译过程自动化,直接通过运行脚本就得到最终的APK文件。Linux下用脚本编译c/c++程序至少需要两个东西,一个是编译器,如gcc/g++,另一个则是编译配置...
Android开发实践:Java层与Jni层的数组传递

Android开发实践:Java层与Jni层的数组传递

Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层,从Jni层到JAVA层,各有3种传递方式,下面用代码示例简单地介绍一下。示例代码的主要文件有两个,一个是Native.java,是Java层的类;另一个是Nat...
Android开发实践:JNI层线程回调Java函数示例

Android开发实践:JNI层线程回调Java函数示例

JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码(工程文件见附件),描述如何在Android的JNI层开启一个线程,并在线程中回调Java层的函数。代码主要分为Java层(java代码)和JNI层(c语言代码),首先看看Java层的代码(Native.java)。如上所示,Java层与JNI层的接口代码主要封装在Native类...
Android开发实践:检测App的内存占用和泄漏

Android开发实践:检测App的内存占用和泄漏

前段时间开发的Android应用,每次都是在运行了半个小时左右后突然挂掉了,很是莫名其妙,也不知道哪里出了问题,后来一步步排查,发现问题出在JNI层,一个被频繁调用的函数分配的内存忘记释放,导致内存泄漏。这次问题使我明白,别以为Android程序是基于Java语言,有强大的垃圾回收机制,就完全不用担心内存问题,其实Android程序也要特别小心你的内存,因为毕竟手机不比PC机,内存是极其有限的,在内存不够的时候,系统随时会Kill掉你的程序。目前我所了解到...
Ubuntu上编译Linux内核的过程笔记

Ubuntu上编译Linux内核的过程笔记

总结一下在Ubuntu上编译Linux内核的过程1.首先要获得root权限,方法有二,均验证过:a.sudopasswd root******(输入原先的root口令)******(输入新的root口令,可以保持原样。我就保持的原样)******(再次输入新的root口令)su root输入一遍设定的密码之后就可以在终端中使用root权限了!b. sudo -s –H*********(输入设定的密码)即可获得root权限2. 安装编译程序必须...
<< 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 >>