in

阅读 / 问答 / 标签

WINCE车机系统怎么升级?

Windows CE是微软嵌入式和移动DU计算平台的基础。它是一个开放的、可扩展的32位嵌入式操作系统。1、要进入shuce桌面,请先下载CE桌面程序资源管理器.exe然后复制到U盘或存储卡上。2、首先,打开原始地图文件夹并找到naviesfile文件夹。3、 NaviConfig.dll这是参数设置文件。用文字打开的是乱码,所以需要特殊的工具。下图中标记的文件是需要查看和修改的工具。把它放在naviesfile文件夹中。4、双击端口视图工具,然后单击下面的“打开”按钮以在同一目录中找到端口NaviConfig.dll确认后,数据自动填入每个参数的文本框中。这是原始映射的端口和波特率。记下其他参数,不要移动。5、下载适合您的模型的地图软件。6、将地图SD卡插入导航器。如果默认情况下导航处于打开状态,请先退出以完成更新。

Linux 多线程编程(二)2019-08-10

三种专门用于线程同步的机制:POSIX信号量,互斥量和条件变量. 在Linux上信号量API有两组,一组是System V IPC信号量,即PV操作,另外就是POSIX信号量,POSIX信号量的名字都是以sem_开头. phshared参数指定信号量的类型,若其值为0,就表示这个信号量是当前进程的局部信号量,否则该信号量可以在多个进程之间共享.value值指定信号量的初始值,一般与下面的sem_wait函数相对应. 其中比较重要的函数sem_wait函数会以原子操作的方式将信号量的值减一,如果信号量的值为零,则sem_wait将会阻塞,信号量的值可以在sem_init函数中的value初始化;sem_trywait函数是sem_wait的非阻塞版本;sem_post函数将以原子的操作对信号量加一,当信号量的值大于0时,其他正在调用sem_wait等待信号量的线程将被唤醒. 这些函数成功时返回0,失败则返回-1并设置errno. 生产者消费者模型: 生产者对应一个信号量:sem_t producer; 消费者对应一个信号量:sem_t customer; sem_init(&producer,2)----生产者拥有资源,可以工作; sem_init(&customer,0)----消费者没有资源,阻塞; 在访问公共资源前对互斥量设置(加锁),确保同一时间只有一个线程访问数据,在访问完成后再释放(解锁)互斥量. 互斥锁的运行方式:串行访问共享资源; 信号量的运行方式:并行访问共享资源; 互斥量用pthread_mutex_t数据类型表示,在使用互斥量之前,必须使用pthread_mutex_init函数对它进行初始化,注意,使用完毕后需调用pthread_mutex_destroy. pthread_mutex_init用于初始化互斥锁,mutexattr用于指定互斥锁的属性,若为NULL,则表示默认属性。除了用这个函数初始化互斥所外,还可以用如下方式初始化:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER。 pthread_mutex_destroy用于销毁互斥锁,以释放占用的内核资源,销毁一个已经加锁的互斥锁将导致不可预期的后果。 pthread_mutex_lock以原子操作给一个互斥锁加锁。如果目标互斥锁已经被加锁,则pthread_mutex_lock则被阻塞,直到该互斥锁占有者把它给解锁. pthread_mutex_trylock和pthread_mutex_lock类似,不过它始终立即返回,而不论被操作的互斥锁是否加锁,是pthread_mutex_lock的非阻塞版本.当目标互斥锁未被加锁时,pthread_mutex_trylock进行加锁操作;否则将返回EBUSY错误码。注意:这里讨论的pthread_mutex_lock和pthread_mutex_trylock是针对普通锁而言的,对于其他类型的锁,这两个加锁函数会有不同的行为. pthread_mutex_unlock以原子操作方式给一个互斥锁进行解锁操作。如果此时有其他线程正在等待这个互斥锁,则这些线程中的一个将获得它. 三个打印机轮流打印: 输出结果: 如果说互斥锁是用于同步线程对共享数据的访问的话,那么条件变量就是用于在线程之间同步共享数据的值.条件变量提供了一种线程之间通信的机制:当某个共享数据达到某个值时,唤醒等待这个共享数据的线程. 条件变量会在条件不满足的情况下阻塞线程.且条件变量和互斥量一起使用,允许线程以无竞争的方式等待特定的条件发生. 其中pthread_cond_broadcast函数以广播的形式唤醒所有等待目标条件变量的线程,pthread_cond_signal函数用于唤醒一个等待目标条件变量线程.但有时候我们可能需要唤醒一个固定的线程,可以通过间接的方法实现:定义一个能够唯一标识目标线程的全局变量,在唤醒等待条件变量的线程前先设置该变量为目标线程,然后采用广播的方式唤醒所有等待的线程,这些线程被唤醒之后都检查该变量以判断是否是自己. 采用条件变量+互斥锁实现生产者消费者模型: 运行结果: 阻塞队列+生产者消费者 运行结果:

wince如何连接网络?

只要网络组件都加上了,插上网线就可以上网了,跟PC没什么区别!

wince5.0和6.0有什么区别

WinCE6.0与5.0的区别Windows CE6.0重新设计了Kernel,和Windows CE 5.0相比较支持的进程数从32个扩展到32000 ,每个进程的地址空间从32MB扩展到2GB ,很多系统模块(如文件系统和设备管理器)将运行在kernel模式,OAL也从kernel独立出来,driver可以运行在kernel模式和user模式。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市 。Windows Embedded CE 6.0加入了新的单元核心数据和语音组件 , Windows CE 6.0大幅改变了核心定址以及资源分配的机制,旧版CE同时间只能有32个程序执行于各自分配的32MB虚拟存储器空间中,6.0版则是大幅放宽了限制,最大可同时执行32,000个程序,而且每个程序可拥有独立分配的2GB虚拟存储器,在此同时,核心服务、硬件装置的驱动程序、视窗绘图以及事件子系统、档案系统等服务都被转移到系统核心保留空间中。不过这样的改变也会带给使用者疑虑,毕竟过去NT 4.0就曾经上演过类似的戏码,将驱动程序从使用者模式转移到核心模式,虽然可以大幅改进应用的速度,但是一个体质不良的驱动程序,可能就会拖垮整个系统,因此在硬件驱动程序的开发上,就必需要有个有效标准来规范,最好还要导入如WHQL之类的驱动程序验证服务,以避免影响整个系统的稳定性。 Windows CE 6.0的新变革Windows CE 6.0依旧把眼光投注在ARM架构中,新的BSP与编译器也都支持了ARM的最新体系,而6.0版也是微软首个导入ExFAT的操作系统, ExFAT在Windows CE 6.0中,担当了总管所有外接储存媒体的中界层的角色,广为产业界所称赞的是,这能够解除过去传统FAT档案系统的32GB单一容量限制。ExFAT同样也解除了单一档案只能在2GB以下的限制,这对于硬件厂商以Windows CE发展大容量储存管理伺服架构,有着相当大的帮助。加上一些安全机制,我们可以把ExFAT视为Windows CE 6.0上的NTFS加强版。VoIP也是Windows CE 6.0另一个持续加强的重点,除了在应用程序层的整合更进一步以外,操作系统核心也具备直接支持的能力,因此硬件开发上可以更容易的在Windows CE环境上进行各种网络的语音通讯服务。而因应这样的趋势,6.0版自然也把过去5.0版的缺失补正过来,在网络堆叠协定方面,直接支持了802.11i、WAP2、802.11e(无线QoS)、蓝牙A2DP/AVRCP的AES加密等等,为无线通讯建立了一个稳定、安全以及可靠的应用环境。而从使用者观点来看,Windows CE 6.0扩展了超越以往版本总和的承诺,这些功能包括了最新的多媒体能力,诸如Windows Media 10/11的支持、,对于网络多媒体装置的原生整合能力,在Platform Builder开发工具中,甚至也加入了行动媒体中心的支持,可以藉由Windows Media Connect 2.0大幅强化多媒体应用的支持能力,并且可以与其它微软的操作系统或硬件装置做同步统合的动作。这些功能包含了以下项目:   ■ TIFF编解码器的支持   ■ HD-DVD的解码器支持   ■ MPEG-2解码器   ■ 更多的影音编码与格式支持   ■ UDF 2.5格式的支持   ■ 虚拟环绕声道的支持   ■ 多轨音效的支持   ■ 强化DirectDraw,可支持电视使用的交错显示模式   ■ USB OTG功能加入,可作为USB的控制端   虽然在核心部分做出这么大的更新,但是Windows CE 6.0的储存上并没有如微软其它操作系统般的飞涨(Vista甚至需要超过10GB的初始储存安装空间!),相较起5.0版,6.0在体积上也不过增加了5%左右,虽然这对嵌入式系统产业来说是理所当然,但对于微软可以说是另一项奇迹。 Windows CE 6.0带给开发者的好处   在开放原始码的历史中,微软要写下另一个新的里程碑,100%对产品开发者释放出原始码,且可允许厂商进行自订的变更或订做,而无须释放出经过修改的程序码,虽然在广义上并不能视为真正开放,但是为这些喜欢藏私留一手的厂商来说,无疑是增加竞争力的最佳手段之一。而作为开发工具的Visual Studio 2005 PRO将会作为Windows CE 6.0的整体套件之一,内建的许多开发工具与定义对于开发者来说相对便利许多。   Windows CE 6.0支持了Windows .NET Compact Framework 2.0作为应用程序管理开发以及Win32、 MFC、 ATL、 WTL和STL等程序开发界面提供给开发原生应用程序的开发者使用。具备了如此势力庞大以及完整的开发环境作为支持,开发者与制造商也可确保后续的支持不虞匮乏。   而在硬件方面,在不变更原有的硬件架构之下,导入Windows CE 6.0可以大幅改善原有程序的执行效率,并且也容许同时间有更多程序同步执行,由于每个程序都具备有独立的执行空间,特定程序当掉,也不会影响到其它应用程序或系统执行,提供给使用者比起以往旧版系统更强的稳固性与更大的弹性。而目前逐渐风行的多核心处理架构上,Windows CE 6.0也可以在不变更程序开发者原有程序模型的状况之下,提供最佳化的核心工作自动分配与指定,当然,如果有需求的话,程序开发者依然可以自行决定指定核心的方式。WinCE6.0 R3新特征Windows Embedded 6.0 R3是在Windows CE 6.0 R2的基础上,增加了下列技术: Silverlight for Embedded Internet Explorer Embedded浏览器 Flash Lite支持 手势识别Gesture API Connection Manager Mobile QQ Office Viewer 其中Internet Explorer Embedded是由Windows Embedded中国研发团队单独开发的。而Mobile QQ是由腾讯公司开发整合的。 新增了Silverlight for Windows Embedded ,此项功能是 Microsoft Silverlight 技术不依赖于浏览器的本机代码执行,用于为基于 Windows Embedded CE 6.0 R3 的设备打造丰富的用户界面。比如,在Expression Blend下,可以更容易的进行视图开发,通过XRCustom UserControlImpl类就可以简单创建一个自定义控制,用于控制高清视图的大小、颜色和动态画面等众多的常用操作。现在原始设备制造商能够独立设备上用户体验设计和核心功能开发,通过缩短应用开发时间帮助提高上市流程效率,从而实现简化的用户界面定制,并让设计人员和开发人员能够专注于他们的核心能力。现在可以由专门的开发人员来使用Silverlight、Microsoft Expression Blend和Internet Explorer Embedded技术开发高清内容。 作为Windows 7世代的产品,他提供了与Windows 7的连通性——Windows 7 Device Stage 驱动端口。并且开发者和OEM厂商还以通过Microsoft Connection Manager(微软链接管理器)实现设备和PC间的连接。同时新增的office和PDF查看器也丰富了互连体验。Flash Lite组件的支持,使得WinCE有了播放FLASH动画和视频的能力,增强了用户体验。

WINCE和DOS系统什么关系?什么区别?

没有什么关系,只不过都是微软公司开发的。WINCE是用于嵌入式设备的系统,包括PDA、智能手机等,魅族M8的系统就是基于WinCE的,另外微软的WM手机操作系统也是基于WINCE的。DOS系统是用于个人电脑(PC)的操作系统,是单任务单用户操作系统,是Windows系列系统的前身。

WINCE系统下怎么找到设备管理器

wince是微软的一款嵌入式的系统,和WIN95是差不多的,前几天看到一个,在我的电脑的属性中是没有的。你打开控制面板,看看里面的硬件选项能不能看的到?

wince系统安装carplay

Wince安装系统carplay要有软件和硬件适用,在硬件适用的情形下,免费下载与硬件兼容的carplay软件导进车载一体机就能完成车载一体机和手机互联,从而根据智能语音系统浏览手机上,并将其投频到中控屏上。但假如硬件不兼容wince是无法安装carplay的,这时仅有根据拆换服务器,并转换原厂路线才可以得到。Wince安装系统carplay实例教程1、下载一个与车系兼容的carplay软件,将其拷贝到汽车导航的tf卡,随后再插回去汽车导航之中;2、点一下中控台的菜单栏标志,长按carplay软件3秒之上,这时系统软件会弹出来实际操作选择项,挑选“编写”;3、在编写页面中挑选“实行外界程序流程”,并挑选carplay的文件路径;4、进行安装后,歇火重启,开启carplay和手机连接,联接取得成功就可以正常的应用了。Wince车截怎样提升第三方软件?一般状况下,wince是不可以添加第三方软件的,确实要想添加就只有安_软件苹果越狱,也就是刷机,不然是没法添加的。但值得一提的是,wince归属于非常初期的电脑操作系统,许多汽车的硬件都非常年久,这时刷机的风险性是非常大的,而且就算刷机取得成功,可靠性也非常难确保。假如wince成功安_carplay,那_完成手机互联后,它会将手机上能运用在中控台上的软件都搬至车机里,那样在_有添加软件的情形下也可以依靠手机使用。百万购车补贴

阿特兹车机进wince界面方法

1、首先在电脑中找到wince此软件,并开启将车以及电脑开启蓝牙进行连接。2、其次连接完毕后,单击电脑中的wince此软件。3、最后单击进入后,在此登陆界面输入账号以及密码,并单击登陆按键即可进入wince界面。

Linux 与WinCE的区别

linux内核不包含图形界面,那些图形界面是其他人安装上的,所以原生的linux只能用命令行操作:WindowsCE是微软公司嵌入式、移动计算平台的基础,它的内核直截包含了图形界面,所以可以直接操作图形界面.

win32与winCE有什么区别

wince电脑操作系统,占用空间较小!功能较为简单!一般是放到u盘中来恢复系统!

linux 多进程信号同步问题

朋友你好:希望能帮到你。互相学习。线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex)通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);int pthread_mutex_lock(pthread_mutex *mutex);int pthread_mutex_destroy(pthread_mutex *mutex);int pthread_mutex_unlock(pthread_mutex *(1)先初始化锁init()或静态赋值pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIERattr_t有:PTHREAD_MUTEX_TIMED_NP:其余线程等待队列PTHREAD_MUTEX_RECURSIVE_NP:嵌套锁,允许线程多次加锁,不同线程,解锁后重新竞争PTHREAD_MUTEX_ERRORCHECK_NP:检错,与一同,线程请求已用锁,返回EDEADLK;PTHREAD_MUTEX_ADAPTIVE_NP:适应锁,解锁后重新竞争(2)加锁,lock,trylock,lock阻塞等待锁,trylock立即返回EBUSY(3)解锁,unlock需满足是加锁状态,且由加锁线程解锁(4)清除锁,destroy(此时锁必需unlock,否则返回EBUSY,//Linux下互斥锁不占用内存资源示例代码#include <cstdio> #include <cstdlib> #include <unistd.h> #include <pthread.h> #include "iostream" using namespace std;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int tmp; void* thread(void *arg) { cout << "thread id is " << pthread_self() << endl; pthread_mutex_lock(&mutex); tmp = 12; cout << "Now a is " << tmp << endl; pthread_mutex_unlock(&mutex); return NULL; }int main() { pthread_t id; cout << "main thread id is " << pthread_self() << endl; tmp = 3; cout << "In main func tmp = " << tmp << endl; if (!pthread_create(&id, NULL, thread, NULL)) { cout << "Create thread success!" << endl; } else { cout << "Create thread failed!" << endl; } pthread_join(id, NULL); pthread_mutex_destroy(&mutex); return 0; }编译: g++ -o thread testthread.cpp -lpthread说明:pthread库不是Linux系统默认的库,连接时需要使用静态库libpthread.a,所以在使用pthread_create()创建线程,以及调用pthread_atfork()函数建立fork处理程序时,需要链接该库。在编译中要加 -lpthread参数。 2)条件变量(cond)利用线程间共享的全局变量进行同步的一种机制。条件变量上的基本操作有:触发条件(当条件变为 true 时);等待条件,挂起线程直到其他线程触发条件。int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr); int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);int pthread_cond_timewait(pthread_cond_t *cond,pthread_mutex *mutex,const timespec *abstime);int pthread_cond_destroy(pthread_cond_t *cond);int pthread_cond_signal(pthread_cond_t *cond);int pthread_cond_broadcast(pthread_cond_t *cond); //解除所有线程的阻塞(1)初始化.init()或者pthread_cond_t cond=PTHREAD_COND_INITIALIER(前者为动态初始化,后者为静态初始化);属性置为NULL(2)等待条件成立.pthread_wait,pthread_timewait.wait()释放锁,并阻塞等待条件变量为真,timewait()设置等待时间,仍未signal,返回ETIMEOUT(加锁保证只有一个线程wait)(3)激活条件变量:pthread_cond_signal,pthread_cond_broadcast(激活所有等待线程)(4)清除条件变量:destroy;无线程等待,否则返回EBUSY对于int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);一定要在mutex的锁定区域内使用。如果要正确的使用pthread_mutex_lock与pthread_mutex_unlock,请参考pthread_cleanup_push和pthread_cleanup_pop宏,它能够在线程被cancel的时候正确的释放mutex!另外,posix1标准说,pthread_cond_signal与pthread_cond_broadcast无需考虑调用线程是否是mutex的拥有者,也就是说,可以在lock与unlock以外的区域调用。如果我们对调用行为不关心,那么请在lock区域之外调用吧。说明:(1)pthread_cond_wait 自动解锁互斥量(如同执行了pthread_unlock_mutex),并等待条件变量触发。这时线程挂起,不占用CPU时间,直到条件变量被触发(变量为ture)。在调用 pthread_cond_wait之前,应用程序必须加锁互斥量。pthread_cond_wait函数返回前,自动重新对互斥量加锁(如同执行了pthread_lock_mutex)。(2)互斥量的解锁和在条件变量上挂起都是自动进行的。因此,在条件变量被触发前,如果所有的线程都要对互斥量加锁,这种机制可保证在线程加锁互斥量和进入等待条件变量期间,条件变量不被触发。条件变量要和互斥量相联结,以避免出现条件竞争——个线程预备等待一个条件变量,当它在真正进入等待之前,另一个线程恰好触发了该条件(条件满足信号有可能在测试条件和调用pthread_cond_wait函数(block)之间被发出,从而造成无限制的等待)。(3)pthread_cond_timedwait 和 pthread_cond_wait 一样,自动解锁互斥量及等待条件变量,但它还限定了等待时间。如果在abstime指定的时间内cond未触发,互斥量mutex被重新加锁,且pthread_cond_timedwait返回错误 ETIMEDOUT。abstime 参数指定一个绝对时间,时间原点与 time 和 gettimeofday 相同:abstime = 0 表示 1970年1月1日00:00:00 GMT。(4)pthread_cond_destroy 销毁一个条件变量,释放它拥有的资源。进入 pthread_cond_destroy 之前,必须没有在该条件变量上等待的线程。(5)条件变量函数不是异步信号安全的,不应当在信号处理程序中进行调用。特别要注意,如果在信号处理程序中调用 pthread_cond_signal 或pthread_cond_boardcast 函数,可能导致调用线程死锁。示例程序1#include <stdio.h>#include <pthread.h>#include "stdlib.h"#include "unistd.h"pthread_mutex_t mutex;pthread_cond_t cond;void hander(void *arg){free(arg); (void)pthread_mutex_unlock(&mutex);}void *thread1(void *arg){pthread_cleanup_push(hander, &mutex); while(1) { printf("thread1 is running "); pthread_mutex_lock(&mutex); pthread_cond_wait(&cond,&mutex); printf("thread1 applied the condition "); pthread_mutex_unlock(&mutex); sleep(4); } pthread_cleanup_pop(0); } void *thread2(void *arg){ while(1) { printf("thread2 is running "); pthread_mutex_lock(&mutex); pthread_cond_wait(&cond,&mutex); printf("thread2 applied the condition "); pthread_mutex_unlock(&mutex); sleep(1); }}int main(){pthread_t thid1,thid2; printf("condition variable study! "); pthread_mutex_init(&mutex,NULL); pthread_cond_init(&cond,NULL); pthread_create(&thid1,NULL,thread1,NULL); pthread_create(&thid2,NULL,thread2,NULL); sleep(1); do { pthread_cond_signal(&cond); }while(1); sleep(20); pthread_exit(0); return 0;}示例程序2:#include <pthread.h> #include <unistd.h> #include "stdio.h"#include "stdlib.h"static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; struct node {int n_number; struct node *n_next; } *head = NULL; /*[thread_func]*/ static void cleanup_handler(void *arg) {printf("Cleanup handler of second thread./n"); free(arg); (void)pthread_mutex_unlock(&mtx); } static void *thread_func(void *arg) {struct node *p = NULL; pthread_cleanup_push(cleanup_handler, p); while (1) { //这个mutex主要是用来保证pthread_cond_wait的并发性pthread_mutex_lock(&mtx); while (head == NULL) { //这个while要特别说明一下,单个pthread_cond_wait功能很完善,为何//这里要有一个while (head == NULL)呢?因为pthread_cond_wait里的线 //程可能会被意外唤醒,如果这个时候head != NULL,则不是我们想要的情况。 //这个时候,应该让线程继续进入pthread_cond_wait // pthread_cond_wait会先解除之前的pthread_mutex_lock锁定的mtx, //然后阻塞在等待对列里休眠,直到再次被唤醒(大多数情况下是等待的条件成立 //而被唤醒,唤醒后,该进程会先锁定先pthread_mutex_lock(&mtx);,再读取资源 //用这个流程是比较清楚的/*block-->unlock-->wait() return-->lock*/ pthread_cond_wait(&cond, &mtx); p = head; head = head->n_next; printf("Got %d from front of queue/n", p->n_number);free(p); } pthread_mutex_unlock(&mtx); //临界区数据操作完毕,释放互斥锁 } pthread_cleanup_pop(0); return 0; } int main(void) {pthread_t tid; int i; struct node *p; //子线程会一直等待资源,类似生产者和消费者,但是这里的消费者可以是多个消费者,而 //不仅仅支持普通的单个消费者,这个模型虽然简单,但是很强大pthread_create(&tid, NULL, thread_func, NULL); sleep(1); for (i = 0; i < 10; i++) { p = (struct node*)malloc(sizeof(struct node)); p->n_number = i; pthread_mutex_lock(&mtx); //需要操作head这个临界资源,先加锁, p->n_next = head; head = p; pthread_cond_signal(&cond); pthread_mutex_unlock(&mtx); //解锁 sleep(1); } printf("thread 1 wanna end the line.So cancel thread 2./n");//关于pthread_cancel,有一点额外的说明,它是从外部终止子线程,子线程会在最近的取消点,退出 //线程,而在我们的代码里,最近的取消点肯定就是pthread_cond_wait()了。 pthread_cancel(tid); pthread_join(tid, NULL); printf("All done -- exiting/n"); return 0; }3)信号量如同进程一样,线程也可以通过信号量来实现通信,虽然是轻量级的。信号量函数的名字都以"sem_"打头。线程使用的基本信号量函数有四个。#include <semaphore.h>int sem_init (sem_t *sem , int pshared, unsigned int value);这是对由sem指定的信号量进行初始化,设置好它的共享选项(linux 只支持为0,即表示它是当前进程的局部信号量),然后给它一个初始值VALUE。两个原子操作函数:int sem_wait(sem_t *sem);int sem_post(sem_t *sem);这两个函数都要用一个由sem_init调用初始化的信号量对象的指针做参数。sem_post:给信号量的值加1;sem_wait:给信号量减1;对一个值为0的信号量调用sem_wait,这个函数将会等待直到有其它线程使它不再是0为止。int sem_destroy(sem_t *sem);这个函数的作用是再我们用完信号量后都它进行清理。归还自己占有的一切资源。示例代码:#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <semaphore.h> #include <errno.h> #define return_if_fail(p) if((p) == 0){printf ("[%s]:func error!/n", __func__);return;} typedef struct _PrivInfo { sem_t s1; sem_t s2; time_t end_time; }PrivInfo; static void info_init (PrivInfo* thiz); static void info_destroy (PrivInfo* thiz); static void* pthread_func_1 (PrivInfo* thiz); static void* pthread_func_2 (PrivInfo* thiz); int main (int argc, char** argv) { pthread_t pt_1 = 0; pthread_t pt_2 = 0; int ret = 0; PrivInfo* thiz = NULL; thiz = (PrivInfo* )malloc (sizeof (PrivInfo)); if (thiz == NULL) { printf ("[%s]: Failed to malloc priv./n"); return -1; } info_init (thiz);ret = pthread_create (&pt_1, NULL, (void*)pthread_func_1, thiz); if (ret != 0) { perror ("pthread_1_create:"); } ret = pthread_create (&pt_2, NULL, (void*)pthread_func_2, thiz); if (ret != 0) { perror ("pthread_2_create:"); } pthread_join (pt_1, NULL); pthread_join (pt_2, NULL); info_destroy (thiz); return 0; } static void info_init (PrivInfo* thiz) { return_if_fail (thiz != NULL); thiz->end_time = time(NULL) + 10; sem_init (&thiz->s1, 0, 1); sem_init (&thiz->s2, 0, 0); return; } static void info_destroy (PrivInfo* thiz) { return_if_fail (thiz != NULL); sem_destroy (&thiz->s1); sem_destroy (&thiz->s2); free (thiz); thiz = NULL; return; } static void* pthread_func_1 (PrivInfo* thiz) { return_if_fail (thiz != NULL); while (time(NULL) < thiz->end_time) { sem_wait (&thiz->s2); printf ("pthread1: pthread1 get the lock./n"); sem_post (&thiz->s1); printf ("pthread1: pthread1 unlock/n"); sleep (1); } return; } static void* pthread_func_2 (PrivInfo* thiz) { return_if_fail (thiz != NULL); while (time (NULL) < thiz->end_time) { sem_wait (&thiz->s1); printf ("pthread2: pthread2 get the unlock./n"); sem_post (&thiz->s2); printf ("pthread2: pthread2 unlock./n"); sleep (1); } return; }通 过执行结果后,可以看出,会先执行线程二的函数,然后再执行线程一的函数。它们两就实现了同步

求助,关于linux的线程同步问题

我们先来看一下什么是多线程。在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。当函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数中的指令。

WINCE车机系统怎么升级?

支持凯立德,支持正版导航,祝你一生幸福。 查看更多答案>>

如何进入wince界面

  1、首先下载TOWINCE软件,然后放在车载GPS的SD卡的任意位置;   2、然后再把原导航路径设置更改为TOWINCE,然后再继续进入GPS文件管理;   3、重新开机后,从卫星导航可直接进入WINCE界面。

如何设置WinCE仿真模拟器

WinCE仿真器设置一 环境:Windows Server2003 Visual Studio2008还需要安装Microsoft ActiveSync二 设置首先需要设置Microsoft ActiveSync,运行Microsoft ActiveSync,当没有Microsoft ActiveSync,在电脑右下角是一个灰色图标,如图双击这个图标,显示出Microsoft ActiveSync主界面,如图点击"文件",选择"连接设置",出现对话框,如图如果"允许连接以下一个"没有打钩,勾上,并且下面的选择DMA,然后点击OK.三 启动和连接仿真器打开vs2008,点击菜单"工具"->"设备仿真管理器",选择一个Pocket PC 2003仿真器,然后在右键菜单中选择"连接",如图等模拟器启动之后,在右键菜单中点击"插入底座",如图这时候,Microsoft ActiveSync在右下角的图标会变成绿色,表示已经连接上并且开始进行数据同步.四 仿真器联网设置在模拟器中点击"开始"->"设置",在点击"连接"选项卡.双击"网卡","我的网卡连接到"选择默认单位设置,"点击适配器以修改设置"选择AsyncMac NDISWAN Miniport,选中“使用服务器分配的IP地址”,点击右上角的“ok”,提示“新设置将在下次使用适配器时应用。如果适配器当前插在设备中,请先移除,然后重新插入适配器以应用设置。”,点击“ok”,“ok”。双击连接,选择"高级"选项卡,单击"选择网络","在程序自动连接到Internet时,使用:"选择单位设置,然后点击OK,再次OK,再点X,这样就配置完成了.此时,就可以上网了。依次点击“开始”——>“Internet Explorer”——>“收藏夹”——>“MSN Mobile”,就会出现页面了。如还打不开网页,可在“设备仿真器管理器”中选中该模拟器,先点击右键菜单中的“移除底座”,再点击“插入底座”,重新与ActiveSync连接一次,就没问题了。

WinCE 6.0是怎样一个系统

wince是面向嵌入式的操作系统windows XP是面向PC机的操作系统二者软件不兼容

linux中,多线程互斥锁问题

线程之间是并发运行的,所以锁解除后,各个线程都会继续执行,互不影响

loose和skinny是反义词吗

不是

Inno Setup中AppMutex用法 创建互斥示例

1.msdn search Mutex2.inno setup scripts[Setup]...AppMutex=......

wince如何升级?

我不知道你说的升级是升级什么如果是你的系统,只能通过从新刷机升级,就是把原有系统删掉,下载一个新的系统进去

Linux 线程同步有哪些方法?

一、互斥锁(mutex)1.初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。静态分配:pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;动态分配:intpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutex_attr_t*mutexattr);2.加锁。对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。intpthread_mutex_lock(pthread_mutex*mutex);intpthread_mutex_trylock(pthread_mutex_t*mutex);3.解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。intpthread_mutex_unlock(pthread_mutex_t*mutex);4.销毁锁。锁在是使用完成后,需要进行销毁以释放资源。intpthread_mutex_destroy(pthread_mutex*mutex);二、条件变量(cond)1.初始化条件变量。静态态初始化,pthread_cond_tcond=PTHREAD_COND_INITIALIER;动态初始化,intpthread_cond_init(pthread_cond_t*cond,pthread_condattr_t*cond_attr);2.等待条件成立。释放锁,同时阻塞等待条件变量为真才行。timewait()设置等待时间,仍未signal,返回ETIMEOUT(加锁保证只有一个线程wait)intpthread_cond_wait(pthread_cond_t*cond,pthread_mutex_t*mutex);intpthread_cond_timewait(pthread_cond_t*cond,pthread_mutex*mutex,consttimespec*abstime);3.激活条件变量。pthread_cond_signal,pthread_cond_broadcast(激活所有等待线程)intpthread_cond_signal(pthread_cond_t*cond);intpthread_cond_broadcast(pthread_cond_t*cond);//解除所有线程的阻塞4.清除条件变量。无线程等待,否则返回EBUSYintpthread_cond_destroy(pthread_cond_t*cond);三、信号量(sem)1.信号量初始化。intsem_init(sem_t*sem,intpshared,unsignedintvalue);这是对由sem指定的信号量进行初始化,设置好它的共享选项(linux只支持为0,即表示它是当前进程的局部信号量),然后给它一个初始值VALUE。2.等待信号量。给信号量减1,然后等待直到信号量的值大于0。intsem_wait(sem_t*sem);3.释放信号量。信号量值加1。并通知其他等待线程。intsem_post(sem_t*sem);4.销毁信号量。我们用完信号量后都它进行清理。归还占有的一切资源。intsem_destroy(sem_t*sem);

Windows CE是什么系统?

WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。x0dx0a  其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivit)和伴侣(Companion);E代表电子产品(Electronics)。与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows 95/98,但Windows CE是基于WIN32 API重新开发、新型的信息设备的平台。Windows CE具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。Windows CE并非是专为单一装置设计的,所以微软为旗下采用Windows CE作业系统的产品大致分为三条产品线,Pocket PC(掌上电脑)、Handheld PC(手持设备)及Auto PC。 x0dx0a  WindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0 和6.0x0dx0a  WinCE1.0 : x0dx0a  WINCE1.0是一种基于Windows95的操作系统,其实就是单色的Windows95简化版本。90年代中期卡西欧推出第一款采用WinCE1.0操作系统的蛤壳式PDA,算是第一家推出真正称得上手掌尺寸的掌上电脑厂商。作为第一代的WinCE1.0于1996年问世,不过它最初的发展并不顺利。当时Paim操作系统在PDA市场上非常成功,几乎成为了整个PDA产品的代名词,在这种情况下,微软公司被迫为最初WinCE的不断改进的同时,微软公司也通过游说、 x0dx0a  技术支持、直接资助等手段聚集了大量合作厂商,使WinCE类的PDA阵容越来越强大。 x0dx0a  WinCE2.0 : x0dx0a  随着Windows95的出现和Windows98的成功,另外一个巨人-微软站起来了,并迅速地在PC操作系统业界建立了微软帝国。PDA市场的发展潜力被众多分析家看好,嗅觉异常灵敏的“微软”自然不会放过这样一个巨大的市场,在其操作系统帝国已经非常稳定的前提下,又开始了在PDA市场上的全力冲刺,用 x0dx0a  WinCE2.0操作系统来打造与Palm非常类似的掌上产品。 x0dx0a  WinCE2.0不仅比CE1.0快的多,而且的彩色显示,又众多新型PDA采用新的WinCE2.0系统,大有取代Pilot的趋势,成为PDA操作系统新的标准。尽管CE2.0仍然要比Pilot的操作系统需要的空间要大的多,但它具有Windows的界面,会用PC的人小编估计没有多少人不会使用微软的操作系统。如果你熟悉Windows95,在使用WindowsCE的时候就熟门熟路了,就不需要重新学习。而且,两者技术上的相似性,第三方Windows应用软件开发商们,就可以很容易地把自己的应用软件转换成可供CE运行的版本,因此,WindowsCE的可使用软件的种类将会越来越多的。 x0dx0a  WinCE3.0: x0dx0a  WinCE3.0是微软的Windows Compact Edition,是一个通用版本,并不针对掌上产品,标准PC、家电和工控设备上也可以安装运行,但要做许多客户化工作,当然也可以做掌上电脑。 微软鼓励大家在任何硬件平台(WinCE3.0支持5系列CPU: x86, PowerPC, ARM ,MIPS,SH3/4) 上使用(为了和VxWorks,Linux等竞争),所以早期的WINCE运行在不同的硬件平台上。WinCE3.0 Licence费用为$20 ,10 Licence起,批 x0dx0a  量时大致能降到$15/Licence。 x0dx0a  2000年微软公司将WinCE3.0正式改名为Windows for Pocket PC,简称Pocket PC。就是把Pocket Word和Pocket Excel等一些日常所需的办公软件的袖珍版装了进去Pocket PC,同时在娱乐方面的性能做很大的加强。当然对于微软的所有举动,捧场的厂商自然也不会少,加入Pocket PC 阵营的现在就有HP、Compaq、Casio等一些著名厂商。当Compaq的iPAQ 3630的诞生和在市场的热销,支持和加入Pocket PC阵营的厂商就越来越多。2002年智能手机商机再现,不少PPC厂商希望推出整合手机功能的PPC,于是在2002年8月,专门为手机优化过的微软Pocket PC 2002 Phone Edition操作系统匆匆问世,2002年10月,国内第一款PPC手机--多普达686上市了,随后熊猫推出了CH860、联想推出ET180x0dx0a  WinCE4.0: x0dx0a  WinCE.Net(即WinCE 4.0)是微软于2002年1月份推出的首个以.Net为名的操作系统,从名字上我们就可以知道它是微软的.net的一部分。WinCE.Net是WinCE3.0的升级,同时还加入.Net Framework精简版,支持蓝牙和.Net应用程序开发。 x0dx0a  WinCE4.2 : x0dx0a  WindowsCE.NET 4.2是WindowsCE.NET 4.0/4.1的升级版,对Windows CE先前版本的强大功能进行了进一步的扩充和丰富,基于其开发的设备将从这些微小但重要的变化中获得更好的性能和更强的Windows集成功能。微软在WinCE4.2版时曾提供开放源代码,不过只针对研究单位,而程序代码较少,为200万行。 x0dx0a  WinCE5.0: x0dx0a  WinCE5.0在2004年5月份推出,微软宣布WinCE5.0扩大开放程序源代码。在这个开放源代码计划授权下,微软开放250万行源代码程序作为评估套件(evaluationkit)。凡是个人、厂商都可以下载这些源代码加以修改使用,未来厂商OEM时,则再依执行时期(Run-time)授权,支付Win CE5.0核心每台机器3美元的授权费用,这也是微软第一个提供商业用途衍生授权的操作系统。 x0dx0a  Windows CE 6.0: x0dx0a  2006年11月,微软公司其最新的嵌入式平台Windows Embedded CE 6.0正式上市。作为业内领先的软件工具,Windows Embedded CE 6.0将为多种设备构建实时操作系统,例如:互联网协议(IP)机顶盒、全球定位系统(GPS)、无线投影仪,以及各种工业自动化、消费电子以及医疗设备等。 x0dx0a  在Windows Embedded诞生十周年之际,微软将首次在“共享源计划(Microsoft? Shared Source programme)”中100%毫无保留地开放Windows Embedded CE 6.0内核,(GUI图形用户界面不开放)比Windows Embedded CE的先前版本的开放比例整体高出56%。“共享源计划”为设备制造商提供了全面的源代码访问,以进行修改和重新发布(根据许可协议条款),而且不需要与微软或其他方共享他们最终的设计成果。尽管Windows操作系统是一个通用型计算机平台,为实现统一的体验而设计,设备制造商可以使用Windows Embedded CE 6.0这个工具包为不同的非桌面设备构建定制化的操作系统映像。通过获得Windows Embedded CE源代码的某些部分,比如:文件系统、设备驱动程序和其他核心组件,嵌入式开发者可以选择他们所需的源代码,然后编译并构建自己的代码和独特的操作系统,迅速将他们的设备推向市场。 x0dx0a  微软还将Visual Studio 2005专业版作为Windows Embedded CE 6.0的一部分一并推出。这对微软来说又是一次史无前例的突破。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。 x0dx0a  Windows Embedded CE 6.0重新设计的内核具有32,000个处理器的并发处理能力,每个处理有2GB虚拟内存寻址空间,同时还能保持系统的实时响应。这使得开发人员可以将大量强大的应用程序融入到更智能化、更复杂的设备中。无论在路上、在工作还是在家里,都可以使用这种设备。 x0dx0a  在路上: Windows Embedded CE 6.0加入了新的单元核心数据和语音组件,这使得设备能够通过蜂窝通讯网络建立数据连接和语音通话,从而实现机器对机器的通讯应用场景,并构建相应的设备,如停车表、自动售货机和GPS设备等。 x0dx0a  在工作上: Windows Embedded CE 6.0包含的组件更便于开发者创建通过Windows Vista内置功能无线连接到远程桌面共享体验的投影仪。 x0dx0a  在家中: Windows Embedded CE 6.0充分利用了多媒体技术,以开发网络媒体设备、数字视频录像机和IP机顶盒等。 x0dx0a  最新功能x0dx0a  目前最新的Windows CE为Windows CE 6.0,这个版本在内核部分有很大的进步:x0dx0a  所有系统元件都由EXE改为DLL,并移到 kernel space.x0dx0a  全新设计的虚拟内存架构x0dx0a  全新的设备驱动程序架构,同时支持 User Mode 与 Kernel Mode 两种驱动程序。突破只能运行 32 个工作元(process)的限制,可以运行 32768 个工作元。每一工作元的的虚拟内存限制由32 M 增加到全系统总虚拟内存。Platform Builder IDE 集成到 Microsoft Visual Studio 2005。新的安全架构,确保只有被信任的软件可以在系统中运行。UDF 2.5 文件系统。支持 802.11i (WPA2)及 802.11e (QoS) 等无线规格,及多重 radio support.x0dx0a  支持 x86, ARM, SH4, MIPS 等各种处理器。提供新的 Cellcore components 使系统在移动电话网络中更容易创建数据链接及激活通话。[1][2]在开发环境上,微软也提供兼容于.NET Framework的开发元件:.NET Compact Framework,让正在学习.NET或已拥有.NET程序开发技术的开发人员能迅速而顺利的在搭载Windows CE .NET系统的设备上开发应用程序。x0dx0a  用于掌上电脑Pocket PC以及智能手机Smart Phone上的Windows CE系统称为Windows Mobile,目前成熟的最新版本为Windows Mobile 6.5。x0dx0a  1) WinCE与Linux有何区别?(商业模式,学习和开发难度,对硬件的支持,稳定性,对工程师未来发展的帮助,对研发中心未来发展的帮助) x0dx0a  嵌入式Linux OS与Windows CE相比的优点: x0dx0a  第一:Linux是开放源代码,遍布全球的众多Linux爱好者都是Linux开发者的强大技术支持者;Windows CE目前6.0内核全部开放,GUI不开放。第二:Linux的内核小、效率高;Windows CE相比,占用过多的RAM。第三Linux是开放源代码的OS,在价格上极具竞争力,适合中国国情。Windows CE需要版权费用。第四Linux不仅支持x86芯片,还是一个跨平台的系统。更换CPU时就不会遇到更换平台的困扰。第五,Linux内核的结构在网络方面是非常完整的,它提供了对包括十兆位、百兆位及千兆位的以太网络,还有无线网络、Token ring(令牌环)和光纤甚至卫星的支持,目前WINCE的网络功能也比较强大。 x0dx0a  嵌入式Linux OS与Windows CE相比的弱点: x0dx0a  第一:LINUX开发难度较高,需要很高的技术实力,WINCE开发相对较容易,开发周期短,内核完善,主要是应用层开发。第二:LINUX核心调试工具不全,调试不太方便,尚没有很好的用户图形界面,WINCE的GUI丰富,开发工具强大;第三,系统维护难度大。Linux占用较大的内存,如果去掉部分无用的功能来减小使用的内存,但是如果不仔细,将引起新的问题。 x0dx0a  2) WinCE 5.0与6.0有何区别? x0dx0a  100%毫无保留地开放Windows Embedded CE 6.0内核,微软还将Visual Studio 2005专业版作为Windows Embedded CE 6.0的一部分一并推出。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。Windows Embedded CE 6.0重新设计的内核具有32,000个处理器的并发处理能力,每个处理有2GB虚拟内存寻址空间,同时还能保持系统的实时响应,加入了新的单元核心数据和语音组件,6.0包含的组件更便于开发者创建通过Windows Vista内置功能无线连接到远程桌面共享体验的投影仪,充分利用了多媒体技术,以开发网络媒体设备、数字视频录像机和IP机顶盒等。 x0dx0a  3) 请说出10个使用WinCE的产品(其中有5个产品是大家都知道的)。 x0dx0a  手机,指纹识别系统,汽车电子检测设备,智能家电,医疗仪器(例如:监护仪,心电检测仪等等),工业控制仪器(例如:人机界面显示的高精准电机控制,工业采集控制通信等),定位导行设备(例如:车载GPS导航仪), x0dx0a  4) 请说出10个使用Linux的产品(其中有5个产品是大家都知道的) x0dx0a  摩托罗拉A系列(明),E系列(E6,E680等),爱国者MP5(如P881)x0dx0a  5) WinCE 与 Vxworks有何区别?(商业模式,学习和开发难度,对硬件的支持,稳定性,对工程师未来发展的帮助,对研发中心未来发展的帮助) x0dx0a  WinCE商业模式: x0dx0a  Windows Embedded CE 6.0使用了基于数量的特许许可证模式,设备制造商可以在设备开始供货时再购买运行许可证。微软将提供知识产权保护(根据许可协议条款)和为期10年的产品支持生命周期,确保产品的完整性,并保证厂商得到必要的支持和保护以获得成功。x0dx0a  Windows CE 休眠唤醒全面解析x0dx0a  Windows CE 作为一个广泛应用于移动便携设备上的操作系统,提供了完善的电源管理的功能。其中,休眠唤醒便是一个重要的功能。那么,休眠唤醒是什么原理呢,这首先要从硬件说起。这里呢,我就拿用自己得最熟练的三星平台的2440 CPU为例来和大家探讨一下。x0dx0a  首先看2440 Datasheet 里关于休眠部分的描述x0dx0a  SLEEP ModeThe block disconnects the internal power. So, there occurs no power consumption due to CPU and the internal logic except the wake-up logic in this mode. Activating the SLEEP mode requires two independent power sources. One ofthe two power sources supplies the power for the wake-up logic. The other one supplies other internal logics ,including CPU, and should be controlled for power on/off. In the SLEEP mode, the second power supply source forthe CPU and internal logics will be turned off. The wakeup from SLEEP mode can be issued by the EINT[15:0] or by RTC alarm interrupt.x0dx0a  上面这段话大意就是,当CPU进入休眠模式后,整个CPU系统会进入低功耗模式,只有当外部中断0-15中任意一个中断被触发,或者实时时钟中断被触发时,系统才会被唤醒。我们结合2440 wince5.0 BSP中的相关部分来详细分析。x0dx0a  (这里说句题外话,现在市面流传着2种类型的wince5.0的BSP,一种是基于三星官方发布的PQOAL结构的,另一种,是从4.2的BSP升级上来的,也就是把原来4.2下的 BSP经过修改,使得能够在PB5.0下编译通过。下面我要分析的就是后者,也就是从 wince4.2下升级过来的5.0 BSP.他的结构和4.2下面的基本相同。x0dx0a  按我的观点,这两种BSP 无所谓好坏,只要能实现产品功能的,就是好的BSP.不过从长远来看,微软主推的是PQOAL结构的BSP,以后官方发布的5.0和6.0的BSP,基本都是采用的这种结构。)x0dx0a  使得系统进入休眠的方法有很多,比如在WINCE的桌面上,点左下角的图标,然后选择 “挂起”。或者是在应用程序或驱动中调用SetSystemPowerState函数,都可以让系统进入休眠状态。实际上,这两种方法殊途同归,最终都是要去调一个 OEM层的函数 : OEMPowerOffx0dx0a  .

各位有知道linux mutex的数量有系统上线么

从Backtrace来看,应该是i2c_transfer中调用mutex_lock导致schedule调用而产生进程调度,导致死机.而在中断上下文,这种情况是绝对不允许发生的.换句话说是不允许 睡眠的,不允许进程调度. 你可以把mutex_lock注释掉再试试.

winCE是指什么操作系统??

Microsoft开发的Embedded操作系统,界面和普通的Windows类似,只是需要的资源较小,现在已经可以用于Palm,PDA,还有汽车的多种平台。开发工具有EmbeddedVisulTools,里边有EmbeddedVC,EmbeddedVBTop再看看别人怎么说的。

wince是什么系统

是一个操作系统。WindowsCE作业系统是Windows家族中的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有的Windows桌面技术整合工作。WindowsCE的主要特色包括:增进工作的产能和效率通讯录,日历行程,工作管理,时钟,计算机,Windows档案总管可携式应用软体--MicrosoftPocketExcel与MicrosoftPocketWord控制台--管理控制WindowsCE与办公室PC的连结--在您的桌上型与可携式的办公室间转移资料与他人通讯--可透过电子邮件及红外线无线电通讯,与其他手携式设备交换资料利用可携式InternetExplorer遨游网络想要并使你的HPC达到最大的功用。WindowsCE的使用从随时随地的使用电脑及口袋中藏著PC,到智慧型家电用品及丰富的多媒体家庭剧院,MicrosoftWindowsCE为工作、家庭及其间的任何一点开启了动态的、崭新的开发远景。这个模组化、可自订的作业系统将Windows平台延伸到桌面之外,到达更小、更机动性、更特别的装置之上,然而它的Windows血统则确保了它的相容性,并且支援了更广泛的开发基础。「MICROSOFTWINDOWSCE」揭露了革命性的系统架构,可以让身为开发者或科技领导者的您,扩展消费者及工业电子上的新市场,其中包括了:手握式PC手掌式PC车用电脑网络电视网络电话DVD及多媒体装置未公开及未发现的秘密!您也将会发现观念性的架构来帮助您来了解您的设计选择,并看到真实世界的范例,为您展现此一卓越作业系统的弹性及潜力。

int pthread_mutex_init的初始化互斥锁属性对象

使用pthread_mutexattr_init(3C)可以将与互斥锁对象相关联的属性初始化为其缺省值。在执行过程中,线程系统会为每个属性对象分配存储空间。 int pthread_mutexattr_init(pthread_mutexattr_t *mattr);#include <pthread.h>pthread_mutexattr_t mattr;int ret;/* initialize an attribute to default value */ret = pthread_mutexattr_init(&mattr);调用此函数时,pshared 属性的缺省值为 PTHREAD_PROCESS_PRIVATE。 该值表示可以在进程内使用经过初始化的互斥锁。mattr 的类型为 opaque,其中包含一个由系统分配的属性对象。mattr 范围可能的值为 PTHREAD_PROCESS_PRIVATE 和 PTHREAD_PROCESS_SHARED。PTHREAD_PROCESS_PRIVATE 是缺省值。对于互斥锁属性对象,必须首先通过调用 pthread_mutexattr_destroy(3C) 将其销毁,才能重新初始化该对象。pthread_mutexattr_init() 调用会导致分配类型为 opaque 的对象。如果未销毁该对象,则会导致内存泄漏。pthread_mutexattr_init 返回值pthread_mutexattr_init() 成功完成之后会返回零。其他任何返回值都表示出现了错误。如果出现以下情况,该函数将失败并返回对应的值。ENOMEM 描述:内存不足,无法初始化互斥锁属性对象。

Ferdinand ,Von ,Karl 三个词,组合为德语名字,顺便说一下哪个是名哪个是姓。

Ferdinand von Karl Ferdinand 是名字,Von Karl是姓。德国人(或者说外国人)都是把名字放前面的。和我们中国人刚好掉转。Von Karl 确实是一个贵族的家族姓。

英语姓和名搞不清 Robin van Persie哪个是名字 Karl Marx名字是马克思吗?姓是卡尔?

Robin 和 Karl 是名字

Linux多进程和线程同步的几种方式

Linux 线程同步的三种方法线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。一、互斥锁(mutex)通过锁机制实现线程间的同步。初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。静态分配:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;动态分配:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *mutexattr);加锁。对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。int pthread_mutex_lock(pthread_mutex *mutex);int pthread_mutex_trylock(pthread_mutex_t *mutex);解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。int pthread_mutex_unlock(pthread_mutex_t *mutex);销毁锁。锁在是使用完成后,需要进行销毁以释放资源。int pthread_mutex_destroy(pthread_mutex *mutex);[csharp] view plain copy#include <cstdio>#include <cstdlib>#include <unistd.h>#include <pthread.h>#include "iostream"using namespace std;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int tmp;void* thread(void *arg){cout << "thread id is " << pthread_self() << endl;pthread_mutex_lock(&mutex);tmp = 12;cout << "Now a is " << tmp << endl;pthread_mutex_unlock(&mutex);return NULL;}int main(){pthread_t id;cout << "main thread id is " << pthread_self() << endl;tmp = 3;cout << "In main func tmp = " << tmp << endl;if (!pthread_create(&id, NULL, thread, NULL)){cout << "Create thread success!" << endl;}else{cout << "Create thread failed!" << endl;}pthread_join(id, NULL);pthread_mutex_destroy(&mutex);return 0;}//编译:g++ -o thread testthread.cpp -lpthread二、条件变量(cond)互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量分为两部分: 条件和变量。条件本身是由互斥量保护的。线程在改变条件状态前先要锁住互斥量。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。如果两进程共享可读写的内存,条件变量可以被用来实现这两进程间的线程同步。初始化条件变量。静态态初始化,pthread_cond_t cond = PTHREAD_COND_INITIALIER;动态初始化,int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);等待条件成立。释放锁,同时阻塞等待条件变量为真才行。timewait()设置等待时间,仍未signal,返回ETIMEOUT(加锁保证只有一个线程wait)int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);int pthread_cond_timewait(pthread_cond_t *cond,pthread_mutex *mutex,const timespec *abstime);激活条件变量。pthread_cond_signal,pthread_cond_broadcast(激活所有等待线程)int pthread_cond_signal(pthread_cond_t *cond);int pthread_cond_broadcast(pthread_cond_t *cond); //解除所有线程的阻塞清除条件变量。无线程等待,否则返回EBUSYint pthread_cond_destroy(pthread_cond_t *cond);[cpp] view plain copy#include <stdio.h>#include <pthread.h>#include "stdlib.h"#include "unistd.h"pthread_mutex_t mutex;pthread_cond_t cond;void hander(void *arg){free(arg);(void)pthread_mutex_unlock(&mutex);}void *thread1(void *arg){pthread_cleanup_push(hander, &mutex);while(1){printf("thread1 is running ");pthread_mutex_lock(&mutex);pthread_cond_wait(&cond, &mutex);printf("thread1 applied the condition ");pthread_mutex_unlock(&mutex);sleep(4);}pthread_cleanup_pop(0);}void *thread2(void *arg){while(1){printf("thread2 is running ");pthread_mutex_lock(&mutex);pthread_cond_wait(&cond, &mutex);printf("thread2 applied the condition ");pthread_mutex_unlock(&mutex);sleep(1);}}int main(){pthread_t thid1,thid2;printf("condition variable study! ");pthread_mutex_init(&mutex, NULL);pthread_cond_init(&cond, NULL);pthread_create(&thid1, NULL, thread1, NULL);pthread_create(&thid2, NULL, thread2, NULL);sleep(1);do{pthread_cond_signal(&cond);}while(1);sleep(20);pthread_exit(0);return 0;}[cpp] view plain copy#include <pthread.h>#include <unistd.h>#include "stdio.h"#include "stdlib.h"static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;struct node{int n_number;struct node *n_next;}*head = NULL;static void cleanup_handler(void *arg){printf("Cleanup handler of second thread./n");free(arg);(void)pthread_mutex_unlock(&mtx);}static void *thread_func(void *arg){struct node *p = NULL;pthread_cleanup_push(cleanup_handler, p);while (1){//这个mutex主要是用来保证pthread_cond_wait的并发性pthread_mutex_lock(&mtx);while (head == NULL){//这个while要特别说明一下,单个pthread_cond_wait功能很完善,为何//这里要有一个while (head == NULL)呢?因为pthread_cond_wait里的线//程可能会被意外唤醒,如果这个时候head != NULL,则不是我们想要的情况。//这个时候,应该让线程继续进入pthread_cond_wait// pthread_cond_wait会先解除之前的pthread_mutex_lock锁定的mtx,//然后阻塞在等待对列里休眠,直到再次被唤醒(大多数情况下是等待的条件成立//而被唤醒,唤醒后,该进程会先锁定先pthread_mutex_lock(&mtx);,再读取资源//用这个流程是比较清楚的pthread_cond_wait(&cond, &mtx);p = head;head = head->n_next;printf("Got %d from front of queue/n", p->n_number);free(p);}pthread_mutex_unlock(&mtx); //临界区数据操作完毕,释放互斥锁}pthread_cleanup_pop(0);return 0;}int main(void){pthread_t tid;int i;struct node *p;//子线程会一直等待资源,类似生产者和消费者,但是这里的消费者可以是多个消费者,而//不仅仅支持普通的单个消费者,这个模型虽然简单,但是很强大pthread_create(&tid, NULL, thread_func, NULL);sleep(1);for (i = 0; i < 10; i++){p = (struct node*)malloc(sizeof(struct node));p->n_number = i;pthread_mutex_lock(&mtx); //需要操作head这个临界资源,先加锁,p->n_next = head;head = p;pthread_cond_signal(&cond);pthread_mutex_unlock(&mtx); //解锁sleep(1);}printf("thread 1 wanna end the line.So cancel thread 2./n");//关于pthread_cancel,有一点额外的说明,它是从外部终止子线程,子线程会在最近的取消点,退出//线程,而在我们的代码里,最近的取消点肯定就是pthread_cond_wait()了。pthread_cancel(tid);pthread_join(tid, NULL);printf("All done -- exiting/n");return 0;}三、信号量(sem)如同进程一样,线程也可以通过信号量来实现通信,虽然是轻量级的。信号量函数的名字都以"sem_"打头。线程使用的基本信号量函数有四个。信号量初始化。int sem_init (sem_t *sem , int pshared, unsigned int value);这是对由sem指定的信号量进行初始化,设置好它的共享选项(linux 只支持为0,即表示它是当前进程的局部信号量),然后给它一个初始值VALUE。等待信号量。给信号量减1,然后等待直到信号量的值大于0。int sem_wait(sem_t *sem);释放信号量。信号量值加1。并通知其他等待线程。int sem_post(sem_t *sem);销毁信号量。我们用完信号量后都它进行清理。归还占有的一切资源。int sem_destroy(sem_t *sem);[cpp] view plain copy#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>#include <errno.h>#define return_if_fail(p) if((p) == 0){printf ("[%s]:func error!/n", __func__);return;}typedef struct _PrivInfo{sem_t s1;sem_t s2;time_t end_time;}PrivInfo;static void info_init (PrivInfo* thiz);static void info_destroy (PrivInfo* thiz);static void* pthread_func_1 (PrivInfo* thiz);static void* pthread_func_2 (PrivInfo* thiz);int main (int argc, char** argv){pthread_t pt_1 = 0;pthread_t pt_2 = 0;int ret = 0;PrivInfo* thiz = NULL;thiz = (PrivInfo* )malloc (sizeof (PrivInfo));if (thiz == NULL){printf ("[%s]: Failed to malloc priv./n");return -1;}info_init (thiz);ret = pthread_create (&pt_1, NULL, (void*)pthread_func_1, thiz);if (ret != 0){perror ("pthread_1_create:");}ret = pthread_create (&pt_2, NULL, (void*)pthread_func_2, thiz);if (ret != 0){perror ("pthread_2_create:");}pthread_join (pt_1, NULL);pthread_join (pt_2, NULL);info_destroy (thiz);return 0;}static void info_init (PrivInfo* thiz){return_if_fail (thiz != NULL);thiz->end_time = time(NULL) + 10;sem_init (&thiz->s1, 0, 1);sem_init (&thiz->s2, 0, 0);return;}static void info_destroy (PrivInfo* thiz){return_if_fail (thiz != NULL);sem_destroy (&thiz->s1);sem_destroy (&thiz->s2);free (thiz);thiz = NULL;return;}static void* pthread_func_1 (PrivInfo* thiz){return_if_fail(thiz != NULL);while (time(NULL) < thiz->end_time){sem_wait (&thiz->s2);printf ("pthread1: pthread1 get the lock./n");sem_post (&thiz->s1);printf ("pthread1: pthread1 unlock/n");sleep (1);}return;}static void* pthread_func_2 (PrivInfo* thiz){return_if_fail (thiz != NULL);while (time (NULL) < thiz->end_time){sem_wait (&thiz->s1);printf ("pthread2: pthread2 get the unlock./n");sem_post (&thiz->s2);printf ("pthread2: pthread2 unlock./n");sleep (1);}return;}

linux 多进程信号同步问题

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex)通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);int pthread_mutex_lock(pthread_mutex *mutex);int pthread_mutex_destroy(pthread_mutex *mutex);int pthread_mutex_unlock(pthread_mutex *(1)先初始化锁init()或静态赋值pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIERattr_t有:PTHREAD_MUTEX_TIMED_NP:其余线程等待队列PTHREAD_MUTEX_RECURSIVE_NP:嵌套锁,允许线程多次加锁,不同线程,解锁后重新竞争PTHREAD_MUTEX_ERRORCHECK_NP:检错,与一同,线程请求已用锁,返回EDEADLK;PTHREAD_MUTEX_ADAPTIVE_NP:适应锁,解锁后重新竞争(2)加锁,lock,trylock,lock阻塞等待锁,trylock立即返回EBUSY(3)解锁,unlock需满足是加锁状态,且由加锁线程解锁(4)清除锁,destroy(此时锁必需unlock,否则返回EBUSY,//Linux下互斥锁不占用内存资源

linux 一个线程释放互斥锁后另一个线程为什么不能重新获得互斥锁 代码如下:

函数不全,无法解答

karl is getting sick 为什么get加ing

karlisgettingsick.因为前面有be动词(is)。isgetting是现在进行时(be+doing),在这里表示将要发生的动作。意思是“卡尔要生病了。分析:1、现在进行时的用法:表示现在正在进行/发生的动作。常与“now,atthemoment,when从句”等连用。2、现在进行时的结构是:助动词be+动词ing形式(doing)。如:Heisdoinghishomeworknow.他现在正在做作业。3、有些表示位置移动的动词(arrive,come,do,get,go,have,leave等)也可用进行时表示将来时。如:1).I"mleavingtomorrow.我明天走。2).Waitamoment.I"mcoming.稍等一下,我就来。

编译linux-2.6.18内核出错

这个不好查,建议你检查一下配置过程有没有哪儿没有考虑到。

WIN10使用MorphVOXPro用电脑版微信语音怎么有自己的声音

1、首先在电脑中登录微信电脑版,点击左下方的三条杠,也就是‘更多"图标,如图所示。2、然后在菜单栏中,点击‘设置",如图所示。3、进入该界面,点击‘通用设置",如图所示。4、然后在打开的通用页面中,勾选‘开启新消息提醒声音",如图所示。5、这时微信来新消息时,就会有声音了,如图所示就完成了 。

请教linux irq 中断能使用mutex互斥锁吗

从 Backtrace 来看,应该是 i2c_transfer 中调用 mutex_lock 导致 schedule 调用而产生 进程调度,导致死机. 而在中断上下文,这种情况是绝对不允许发生的.换句话说是不允许睡眠的,不允许进程调度. 你可以 把 mutex_lock 注释掉再试试 .

请教linux irq 中断能使用mutex互斥锁吗

从 Backtrace 来看,应该是 i2c_transfer 中调用 mutex_lock 导致 schedule 调用而产生 进程调度,导致死机. 而在中断上下文,这种情况是绝对不允许发生的.换句话说是不允许睡眠的,不允许进程调度. 你可以 把 mutex_lock 注释掉再试试 .

windows 互斥量和事件的区别

事件(event)与互斥量(mutex)区别事件(event) 事件是用来同步地位不相等的线程的,事件可以用来使一个线程完成一件事情,然后另外的线程完成剩下的事情。事件的使用很灵活,自动事件的激发态是由人工来控制的,而Mutex在释放(releaseMetux)后就一直处于激发态,直到线程WaitForSingleObject。事件可以用来控制经典的读写模型和生产者和消费者模型。相应的方式为,生成者等待消费者的消费,再消费者消费完后通知生产者进行生产。互斥量(Mutex) Mutex是排他的占有资源,一般用于地位相等的线程进行同步,每个线程都可以排他的访问一个资源或代码段,不存在哪个线程对资源访问存在优先次序。一个线程只能在Mutex处于激发态的时候访问被保护的资源或代码段,线程可以通过WaitForSingelObject来等待Mutex,在访问资源完成之后,ReleaseMutex释放Mutex,此时Mutex处于激发态。Mutex具有成功等待的副作用,在等待到Mutex后,Mutex自动变为未激发态,直到调用ReleaseMutex使Mutex变为激发态为止。自动事件也具有成功等待的副作用。手动事件没有,必须ResetEvent使手动事件变为未激发态。进程和线程也没有成功等待的副作用。当线程或者进程函数返回时,线程内核对象变为激发态,但WaitForSingleObject并没有使线程或者进程的内核对象变为未激发态。总之,事件一般用于控制线程的先后顺序,而Mutex一般用于排他的访问资源。

linux驱动里 mutex_lock(&amp;tty_mutex)有什么作用?

mutex_lock是用来保护资源。比如某一个变量,多个函数都会对该变量进行操作,为了保证在同一时间,只能有同一个函数对该变量的操作,需要对该变量进行加锁和解锁操作,用来防止不可预知的错误。多线程,多进程中更应该如此。希望对你有帮助!

Linux下线程同步的几种方法

Linux系统中,实现线程同步的方式大致分为六种,包括:互斥锁、自旋锁、信号量、条件变量、读写锁、屏障。其最常用的线程同步方式就是互斥锁、自旋锁、信号量。1、互斥锁互斥锁本质就是一个特殊的全局变量,拥有lock和unlock两种状态,unlock的互斥锁可以由某个线程获得,当互斥锁由某个线程持有后,这个互斥锁会锁上变成lock状态,此后只有该线程有权力打开该锁,其他想要获得该互斥锁的线程都会阻塞,直到互斥锁被解锁。互斥锁的类型:①普通锁:互斥锁默认类型。当一个线程对一个普通锁加锁以后,其余请求该锁的线程将形成一个等待队列,并在锁解锁后按照优先级获得它,这种锁类型保证了资源分配的公平性。一个线程如果对一个已经加锁的普通锁再次加锁,将引发死锁;对一个已经被其他线程加锁的普通锁解锁,或者对一个已经解锁的普通锁再次解锁,将导致不可预期的后果。②检错锁:一个线程如果对一个已经加锁的检错锁再次加锁,则加锁操作返回EDEADLK;对一个已经被其他线程加锁的检错锁解锁或者对一个已经解锁的检错锁再次解锁,则解锁操作返回EPERM。③嵌套锁:该锁允许一个线程在释放锁之前多次对它加锁而不发生死锁;其他线程要获得这个锁,则当前锁的拥有者必须执行多次解锁操作;对一个已经被其他线程加锁的嵌套锁解锁,或者对一个已经解锁的嵌套锁再次解锁,则解锁操作返回EPERM。④默认锁:一个线程如果对一个已经解锁的默认锁再次加锁,或者对一个已经被其他线程加锁的默认锁解锁,或者对一个解锁的默认锁解锁,将导致不可预期的后果;这种锁实现的时候可能被映射成上述三种锁之一。2、自旋锁自旋锁顾名思义就是一个死循环,不停的轮询,当一个线程未获得自旋锁时,不会像互斥锁一样进入阻塞休眠状态,而是不停的轮询获取锁,如果自旋锁能够很快被释放,那么性能就会很高,如果自旋锁长时间不能够被释放,甚至里面还有大量的IO阻塞,就会导致其他获取锁的线程一直空轮询,导致CPU使用率达到100%,特别CPU时间。3、信号量信号量是一个计数器,用于控制访问有限共享资源的线程数。

linux下mutex包含的在哪个头文件

① 点击菜单上的新建; ② 设置一个名称,设置类型为 Linux,版本 Ubuntu(64 bit) 2 设置内存大小为2048 3 点击下一步 4 点击下一步 5 点击下一步 6 设置硬盘40G

rank与ranking在同样做名词时有什么实质区别?

rank[rANk]n.等级, 横列, 阶级adj.繁茂的, 恶臭的, 讨厌的, 下流的vt.排列, 归类于, 把...分等vi.列为, 列队n.[数] 秩ranking[5rANkiN]n.队

linux mutex有超时机制吗

从Backtrace来看,应该是i2c_transfer中调用mutex_lock导致schedule调用而产生进程调度,导致死机.而在中断上下文,这种情况是绝对不允许发生的.换句话说是不允许 睡眠的,不允许进程调度. 你可以把mutex_lock注释掉再试试.

在排行中排第一位应该是take first in the ranking还是at the ranking?

in rank row of first

英雄联盟美服的blind pick和draft pick有啥区别?

需要购买外服、国服账号去So外服各种欧服美服澳服日服台服账号应有尽有,国服各种区纯金币纯净账号要多少有多少,而且账号安全性也有保障 主要是有完美的售后服务,温柔贴心的小姐姐服务,各种服务简直不要太好!

looselipssinkships的翻译是什么

looselipssinkships的意思是:言多必失;祸从口出。looselipssinkships的意思是:言多必失;祸从口出。looselipssinkships的例句是Looselipssinkships.嘴巴不牢,连大船都沉掉。Looselipsmaystillsinkships,butforthemomentitseemsthatanindiscreetkeystrokecandojustasmuchdamage.口风不紧船舰沉,但现在看起来一次不谨慎的键盘敲击也是后患无穷。一、网络释义点此查看looselipssinkships的详细内容 言多必失都说言多必失(Looselipssinkships),可言少也不一定没有失误,如果在错误的时间错误的地点和错误的对象说了一句涉及到具体人事的大实话,那后果真的堪比走嘴 点洗都唔甩_燥来自:点洗都唔甩_燥(Looselipssinkships)2012-04-1316:27:50 走漏风声会沉船的...句点,那个年代的Period走漏风声会沉船的LooseLipsSinkShips肢体语言BodyLanguage... 祸从口出“祸从口出”(LOOSELIPSSINKSHIPS)是二战中盟军的口号。他提醒军人和市民,一句不经意的话可能会导致严重后果。二、例句Looselipssinkships.嘴巴不牢,连大船都沉掉。Looselipsmaystillsinkships,butforthemomentitseemsthatanindiscreetkeystrokecandojustasmuchdamage.口风不紧船舰沉,但现在看起来一次不谨慎的键盘敲击也是后患无穷。looselipssinkships的相关临近词loose、loosebody点此查看更多关于looselipssinkships的详细信息

Linux中 条件变量为什么要用互斥锁来保护?

看看哲学家就餐问题之类的....

windows使用什么对象使多线程之间对资源互斥

互斥对象的使用和Event的使用基本是一致的。区别在于,Mutex被称为全局互斥对象,不仅可以在多线程中使用,甚至还可以在多进程中使用。Mutex是一个命名对象,所有用同一个名字创建的Mutex都会被视为同一个对象。 无论是Mutex还是Event都有同步和互斥两种用法。很多资源因为本身的特性,要求同时只能有一个线程访问,比如vector之类的数据结构,同时有两个线程做插入操作,数据就会出错;代码也是一样,有一些代码本身是不允许在多线程中间同时进入的。这时候就可以用Mutex或者Event来进行互斥。 具体方法是创建一个初值为True(Set)的AutoReset(ManualReset参数为FALSE)的Mutex或者Event,然后每次要访问对应的资源的时候首先WaitForSingleObject,成功Wait到之后,Event或者Mutex会变成False(Unset)的状态,其他线程就无法进入;等到使用结束之后,再SetEvent使Mutex或者Event恢复Set的状态,让其他等待的线程进入。 CriticalSection之类的模块在内部也是使用了Event或者Mutex来完成互斥的。注意需要对每一个互斥的资源或代码使用一个独立的Mutex或者Event。

Linux mutex为什么不能用在中断函数

Linux mutex不能用在中断函数原因:Backtrace来看,应该是i2c_transfer中调用mutex_lock导致schedule调用。pthread_mutex_lock(&qlock);表示尝试去把qlock上锁,它会先判断qlock是否已经上锁,如果已经上锁这个线程就会停在这一步直到其他线程把锁解开。它才继续运行。所以代码中要么是线程1先执行完后执行线程2,要么就是线程2先执行,再执行线程1.而线程3一开始就执行了。中断函数防止方法:要防止中断冲突,其实就是要知道什么设备容易产生中断冲突,只要知道了这点,在使用这些设备时稍微注意一下就可以了。下面我列出一些容易冲突的设备,希望对读者有用。1、声卡:一些早期的ISA型声卡,系统很有可能不认,就需要用户手动设置(一般为5)。2、内置调制解调器和鼠标:一般鼠标用COM1,内置调制解调器使用COM2的中断(一般为3),这时要注意此时COM2上不应有其它设备。

ranked match和ranking match怎么翻译

ranking match: 排名赛 (还在为名次而比赛)ranked match:已近完成晋级的比赛

ranking second还是ranking the second

having done在两件事有明显先后顺序时使用 ..ed表过去与被动 ..ing表现在与主动 本句中中国主动排第二,而没有先后顺序,所以用D.ranking

nike lunar internationalist 是什么意思

internationalist是鞋款名称,lunar是指采用的Lunarlon中底

维吾尔语翻译mana minig adaxim da buuu

这句话的意思是“这个就是我的朋友呀”的意思。维吾尔语“mana minig adaxim da buuu"里的”mana"是“这个,就这个,在这里”的意思,“mining”是“我的”的意思,"adaxim"是“我的朋友”的意思,“da"是个词缀,没有特殊意思,但是有强调语句意思的作用,”"buuu"是“这个”的意思。整个句子的意思为“这就是我的朋友呀”,“你真是我的朋友”的意思。在维吾尔语里这句话人非常满意或骄傲或高兴自己有这样的一个朋友时才使用这种句法和语气。

must后头应该填的是bring原形还是什么

原形。must的用法■表示义务、意图或建议:必须,应该I must leave at six today. 我今天必须六点钟离开。I must write a letter to the head teacher. 我非得给校长写封信不可。(强烈意图)You must go and see that film——you"d really enjoy it. 你得去看看那部电影,你会真的喜欢它的。(提建议)■表示推测:必定,一定The light is still on, so he must be at home. 灯还是亮的,他一定在家。The light was out. They must have gone to bed. 灯都熄了,他们必定睡了。注意:1. must表示推测时的否定式是can"t或couldn"t(不可能) ,因为must只用于肯定句,语气很强。2. 若对过去情况的推测用must have加过去分词。■表示主张:硬要,一定要If you must go, at least wait till the rain stops. 如果你坚持要走,至少也要等雨停了再走。The machine must break down at this busy hour. 正忙的时候机器偏偏坏了。■表示不可避免性:必然要,必定会All men must die. 人总有一死。

chinese与lunar的区别

中国人当然说ChinesenewYear,越南人怎么说是他们的事。中国人自己过自己的春节。外国人对于中国人的祝福当然应该用ChinesenewYear。对于外国人在这个节日的祝福应该遵守人家的习惯。Chinese,英语单词,代表中国的,中国人,华人,中国人的,华人的,中国话,汉语,中文等等。(开头字母要大写)Chinese并不单单代表中国,China则是"中国"的意思。因为这个单词既代表中国的,又可以代表中华的。所以"ChineseTaipei",在中国大陆被称为中国台北,在台湾,港澳及海外华人地区被称为中华台北。在古英语中,名词的变格(declension)中分为三类,1,强变格,包括一切词干以元音结尾的词;2,弱变格,包括一切以辅音-n结尾的名词;3,小变格,包括所有词干以其他辅音结尾的词。古英语名词的变格包括主格、生格(类似于现在的所有格)、与格、宾格和工具格。所以,China(在英文中最初的拼写是Cin、Chin,来源于拉丁文的Sina)、Japan、Sweden、Den(丹、丹麦)这些名词属于弱变格,需要加-ese变为生格,Chinese,Japanese,Swediese(后演变为Swedish)、Denese(后演变为Danish)。Korea、Norwege(挪威)的词干以元音结尾,属于强变格,需要加-n变为生格,Korean,Norwegian。当然,有些地名的古代拼写和现代拼写不一样,这一点需要加以注意。还有,古英语的语法和现代英语有很大的区别。比如说,在古英语中,名词分为阴性、阳性、中性,需要注意的是,这里的性是语法性别,不是自然性别。以元音a结尾的词是阳性,比如"mona"(月亮),以e结尾的词是阴性,比如"sonne"(太阳)。妻子"wif"是中性,女人"wifman"是阳性,因为词尾后缀man是阳性。这是名词的性。

EXCEL 365 INDEX出现#SPILL问题?

可以把公式改成这样试试,我测试的结果是可以的。INDEX(表体!G:AT,MATCH(B8,$表体!AT,0),1)

trainer鞋帆布鞋底有没有意大利制造

应该有的,因为鞋子都是由很多代工厂加工出来的,意大利应该也会有相应的代工厂,你可以联系客服帮你安排一下发货流程。提到奢侈品牌的运动鞋,一定绕不开 Louis Vuitton 的 Trainer。作为 Virgil Abloh 加入 Louis Vuitton 之后以3%的理念打造的第一双现象级的鞋款,在大街上的撞鞋率属实有点高。LV Trainer Sneaker 的出现似乎是 Virgil 对自己的这句话的自我印证。这句看似决绝的话,却直接地揭开了运动文化和时尚文化的连接关系:它们是「命中注定」的组合,并可以一直这样交叉地创作下去。Virgil 认为街头潮流的创新来源将会被大量的 Vintage 文化所取代。极端地说,未来的街头潮流将是从过去的创作当中抓取合适的改造蓝本以进行潮流的更替迭代。

indirect函数 spill错误?

indirect(1:3)引用了1,2,3行,溢出占用,所以显示错误,改成=ROW(INDIRECT("1:"&COUNTIF(C2:C9,">100")))

shuttle和badminton的区别是什么?(都是羽毛球的意思)

shuttle指的是羽毛球的那个球,也叫shuttle cock. 而badminton指的是羽毛球这项体育运动.

machine是哪里的牌子

出自美国,设计风格都是街头 朋克类

machine有没有复数形式

有直接加s

washing-machine是什么意思

‘washingmachine"这个词是一个组合词,可以分开理解。1.‘washing"是动词‘wash"的ing形式,动词+ing一般为形容词意思,但是还是因词而异(这就是英语的特点)。因此这里‘washing"指的是‘洗的,清晰的"2.‘machine"是机器、机械的意思3.两个词合起来就指的是‘洗衣机"。记忆英语单词,不能死记硬背,应该找到敲门,把词拆开背,这样才能记得牢靠

machine和mechanical是一个词根吗?为什么一个是ma一个me?

不是

machine单词中为什么a发倒e的音而不是发ei的音

这并没什么不寻常啊marinemadonnamarengo这些词也都是和machine 一样,a 发倒 e 的音;此外madammankindmaster这些也都不是发 ei 的音没有什么潜规则的。

china和machine读音一样吗

不一样China 英["tu0283au026anu0259]美[u02c8tu0283au026anu0259]n. 中国; [电影] 中国1971;[词典] [地名] [墨西哥] 奇纳; [地名] [俄罗斯] 奇纳河; [地名] [美国] 柴纳;[网络] 中文; 上海; 北京;[例句]Liaoning is one of China"s provinces.辽宁是中国的一个省份。machine 英[mu0259u02c8u0283i:n]美[mu0259u02c8u0283in]n. 机器,机械; 机械般的人; 核心;vt. 用机器制造,用机器加工;vi. 被机器切削;[网络] 机械设备; 设备管理; 计算机;[例句]I put the coin in the machine and pulled the lever.我把硬币投入机器,拉动控制杆。[其他] 第三人称单数:machines 复数:machines 现在分词:machining 过去式:machined 过去分词:machined 形近词: caching baching archine

怎么让hash join强制走nested loops

首先,每隔一段时间要对经常用到的表进行统计分析(analyze table),让oracle分析出最合适的执行计划; 如果要一直监控sql的执行计划,可以使用trace工具,这个是对session级运行的, exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,t

求EXO歌曲 Machine 歌词分配!!!

你是行星饭???

machine组成的词语

machine code 计算机语言machine-gun 机关枪machine tool 工具机,机床machinery 机器,机械

machine 和equipment 的区别

machine是指机器、机械,制造东西的工具equipment是泛指各类器材、设备~

EXO的machine的歌词,k和m的都要

EXO-M[Luhan]她冰冷皮肤透明像是瓷器她眨眼都有频率她是否留着血液[Chen]黄金比例超现实主义都害怕为她定义打败了人类的逻辑[Lay]像玩具有没有在呼吸会不会为了谁叹息[Xiumin]她的泪滴怎么看不出来有情绪[Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘[Chen]不亲眼看你绝不会相信[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine[Kris]Ah,yeah[Chen]我读着她的眼神她的唇语却也发现绽放的心严密的像个警区[Luhan]或许靠近听她也会哭泣或许会对你同情但表情却异常平静[Lay]像玩具有没有在呼吸会不会为了谁叹息[Xiumin]她的泪滴怎么看不出来有情绪[Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘[Chen]不亲眼看你绝不会相信[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machineHeyhey[Luhan]难解开的秘密[All]Heyhey[Kris]Yeah小心一不注意入了迷就全掉进了她设下的陷阱Yeayyeah明知是陷阱心走火走火gottagettoherheart[Chen]Yeah多危险的美丽[Luhan]足以着魔的好奇[Chen]Woo谁真的能唤醒[Chen+Luhan]她努力爱却被伤过的心[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine————————————————————————————————————————-EXO-K[d。o]一滴血利器也似乎不能完美的黄金比率如梦般的美丽[白贤]头发清新的她的 大理石等皮肤纹理超现实毫不woo~[suho]她是娃娃是不是在呼吸的[do]“知道冰冷面带微笑,[白贤]她的心脏是否患上病的人[suho]不能相信我看看  [all]你像冰冷的machine你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine刀一样美丽的女神你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine[灿烈]ah!yeah!  [白贤]再看也不知道被锁上的她心彻底的抛向地球[suho]精干的身穿红色装上班族一样的眼神也不提示woo~  [d。o]她偶尔会想到什么是否在哭[白贤]说:“知道一样冰冷面带微笑,  [d。o]是否感情是爱的人[suho]不能相信我看看  [all]你像冰冷的machine你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine刀一样美丽的女神你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine  [all]heyhey[suho]一定要查出[all]heyhey  [灿烈]yeahyouknow  困难的密码的她谁也无法解决房间锁yeahya[kai]紧闭黑客入侵网络tohergetgotta[白]Yeah已经觉醒[SUHO]完美的美丽  [白]Woo已经觉醒使笑[SUHO]她星期日试着注视  [all]你像冰冷的machine你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine刀一样美丽的女神你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine*你像冰冷的machine你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine刀一样美丽的女神你的ma、ma、ma、ma、ma、machine你的ma、ma、ma、ma、ma、machine

EXO M《machine》歌词分配

EXO是韩国S.MEntertainment2011年12月22日亮相,2012正式推出的组合,分在中国出道活动的M队和在韩国出道活动的K队。EXO这个名字从意为太阳系以外的外部行星EXOPLANET一词中得来,蕴含了他们是从未知的世界来的新星之意。在EXO后添加代表KOREA的K在韩国开始活动,添加代表Mandarin的M在中国开始活动,并有逐步进军全球,将EXO的音乐传遍全世界的抱负。《MACHINE》收录于EXO的第一张MINI专辑《MAMA》。  EXO-M《MACHINE》歌词    [Luhan]她冰冷皮肤透明像是瓷器她眨眼都有频率她是否留着血液  [Chen]黄金比例超现实主义都害怕为她定义打败了人类的逻辑  [Lay]像玩具有没有在呼吸会不会为了谁叹息  [Xiumin]她的泪滴怎么看不出来有情绪  [Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘  [Chen]不亲眼看你绝不会相信  [All]像爱上机器爱上你  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machine  无声的机器没有心  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machine  [Kris]Ah,yeah  [Chen]我读着她的眼神她的唇语却也发现尘封的心严密的像个禁区  [Luhan]或许靠近听她也会哭泣或许会对你同情但表情却异常平静  [Lay]像玩具有没有在呼吸会不会为了谁叹息  [Xiumin]她的泪滴怎么看不出来有情绪  [Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘  [Chen]不亲眼看你绝不会相信  [All]像爱上机器爱上你  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machine  无声的机器没有心  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machineHeyhey  [Luhan]难解开的秘密  [All]Heyhey  [Kris]Yeah小心一不注意入了迷就全掉进了她设下的陷阱  Yeayyeah明知是陷阱心走火走火gottagettoherheart  [Chen]Yeah多危险的美丽  [Luhan]足以着魔的好奇  [Chen]Woo谁真的能唤醒  [Chen+Luhan]她努力爱却被伤过的心  [All]像爱上机器爱上你  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machine  无声的机器没有心  She"sama-ma-ma-ma-machine  She"sama-ma-ma-ma-machine

machine什么情况下用单数,什么情况下用复数? 麻烦举例说下.谢谢.

这个应该是可数名词,在大多数句子中a machine =machines ,如果句子中特意指到复数的话就要加s.另外,单数名词不能单独存在,前面一定要加冠词a ,an ,the

machine和robot的区别

machine 机器robor 机器人

Trains loops tails在高分子化学中对应翻译是什么?举例说明

这几个词并不是专门的高分子词汇,要看具体语境的,可以把你的原文贴出来。一般 train:串;loop:环,回路;tail:尾部。

求EXO-M的《Machine》歌词。

她冰冷皮肤透明像是瓷器她眨眼都有频率她是否留着血液[Chen]黄金比例超现实主义都害怕为她定义打败了人类的逻辑[Lay]像玩具有没有在呼吸会不会为了谁叹息[Xiumin]她的泪滴怎么看不出来有情绪[Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘[Chen]不亲眼看你绝不会相信[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine[Kris]Ah,yeah[Chen]我读着她的眼神她的唇语却也发现绽放的心严密的像个警区[Luhan]或许靠近听她也会哭泣或许会对你同情但表情却异常平静[Lay]像玩具有没有在呼吸会不会为了谁叹息[Xiumin]她的泪滴怎么看不出来有情绪[Tao]灰眼睛像玻璃猜不透埋藏纯真或神秘[Chen]不亲眼看你绝不会相信[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machineHeyhey[Luhan]难解开的秘密[All]Heyhey[Kris]Yeah小心一不注意入了迷就全掉进了她设下的陷阱Yeayyeah明知是陷阱心走火走火gottagettoherheart[Chen]Yeah多危险的美丽[Luhan]足以着魔的好奇[Chen]Woo谁真的能唤醒[Chen+Luhan]她努力爱却被伤过的心[All]像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine像爱上机器爱上你She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine无声的机器没有心She"sama-ma-ma-ma-machineShe"sama-ma-ma-ma-machine

用machine造句

造句:  1  fumbling,heranhercardthroughthemachine.  他笨手笨脚地用她的卡在机器上刷了一下。  2  thefinaldesignofthemachinewasnotshowntothepublic,however.  然而,这款机器的最终设计并未对外公布。  3  workersinthemachineshopworkinthreeshifts.  机械车间实行三班倒。  4  shewasdrawingoutcashfromacashmachine.  她正从自动提款机中取钱。

machine的复数

machines。根据查询英语单数变复数的形式规律得知:machine的复数是machines,machine的名词含义是机器、机械装置,动词含义是制造、加工成型。

EXO的machine的歌词,k和m的都要

她冰冷 皮肤透明 像是瓷器 她眨眼都有频率 她是否流着血液 黄金比例 超现实主义 都害怕为她定义 打败了人类的逻辑 她的泪滴 怎么看不出来 有情绪 灰眼睛 像玻璃 猜不透埋藏纯真或神秘 不亲眼看 你绝不会相信 像爱上机器 爱上你 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE 无声的机器 没有心 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE Ah! Yeah! 我读着 她的眼神 她的唇语 却发现尘封的心 严密的像个禁区 或许靠近听 她也会哭泣 或许会对你同情 但表情 却异常平静 她的泪滴 怎么看不出来 有情绪 灰眼睛 像玻璃 猜不透埋藏纯真或神秘 不亲眼看 你绝不会相信像爱上机器 爱上你 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE 无声的机器 没有心 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE (Hey hey) 难解开的秘密 (Hey hey) Yeah 小心 一不注意入了迷 就全掉进了她设下的陷阱 yeah Yeah 明知是陷阱 心 走火走火 gotta get to her heart Yeah 多危险的美丽 足以着魔的好奇 Woo~ 谁真的能唤醒 她努力爱 却被伤过的心 像爱上机器 爱上你 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE 无声的机器 没有心 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE 像爱上机器 爱上你 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE 无声的机器 没有心 SHE"S MA MA MA MA MACHINE SHE"S MA MA MA MA MACHINE CHINE

machine是什么意思

machine英[mu0259u02c8u0283i:n]美[mu0259u02c8u0283in]n.机器,机械; 机械般的人; 核心vt.用机器制造,用机器加工vi.被机器切削网络机械设备; 设备管理; 计算机

machine和machinery有什么区别

machine是指一部机器,而machinery是机器的总称,一套机械系统。

MACHINE这首歌的意思

[Luhan] 她冰冷皮肤透明像是瓷器 她眨眼都有频率 她是否留着血液[Chen] 黄金比例超现实主义 都害怕为她定义 打败了人类的逻辑[Lay] 像玩具 有没有在呼吸 会不会为了谁叹息[Xiumin] 她 的泪滴怎么看不出来有情绪[Tao] 灰眼睛像玻璃 猜不透埋藏纯真或神秘[Chen] 不亲眼看你绝不会相信[All] 像爱上机器 爱上你 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine无声的机器 没有心 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine[Kris] Ah, yeah[Chen] 我读着她的眼神她的唇语 却也发现绽放的心 严密的像个警区[Luhan] 或许靠近听她也会哭泣 或许会对你同情 但表情却异常平静[Lay] 像玩具 有没有在呼吸 会不会为了谁叹息[Xiumin] 她 的泪滴怎么看不出来有情绪[Tao] 灰眼睛像玻璃 猜不透埋藏纯真或神秘[Chen] 不亲眼看你绝不会相信[All] 像爱上机器 爱上你 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine无声的机器 没有心 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machineHey hey[Luhan] 难解开的秘密[All] Hey hey[Kris] Yeah小心 一不注意入了迷 就全掉进了她设下的陷阱Yeay yeah 明知是陷阱 心走火走火 gotta get to her heart[Chen] Yeah 多危险的美丽[Luhan] 足以着魔的好奇[Chen] Woo 谁真的能唤醒[Chen+Luhan] 她努力爱却被伤过的心[All] 像爱上机器 爱上你 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine无声的机器 没有心 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine像爱上机器 爱上你 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine无声的机器 没有心 She"s a ma- ma- ma- ma- machineShe"s a ma- ma- ma- ma- machine
 首页 上一页  18 19 20 21 22 23 24 25 26 27 28  下一页  尾页