版主
  
- 积分
- 679
- 金钱
- 679
- 注册时间
- 2013-9-23
- 在线时间
- 95 小时
|
线程在单片机操作系统中又可以称作任务。在UOL语言中,线程是一种可以被中断的一段程序或者方法,该线程脱离main程序独立运行。每个线程都拥有自己的栈空间,这样如果当两个线程同时运行同一个方法的时候不会发生资源冲突。在UOL语言中,如果一个方法被interrupt这个关键字所定义,那么这个方法就是一个线程。例如:
public class Foo
{
public interrupt void thread1()
{
while(true)
{
System.out.printString("thread 1");
System.out.newLine();
System.sleep(1000);
}
}
public interrupt void thread2()
{
while(true)
{
System.out.printString("thread 2");
System.out.newLine();
System.sleep(1000);
}
}
}
在Foo类中,我们可以看到thread1和thread2方法被关键字interrupt所修饰。那么在调用这两个方法的时候,相当于创建了两个独立运行的线程,例如:
public class Test
{
public static void main()
{
//创建Foo的对象
Foo foo = new Foo();
//调用Foo中的线程
foo.thread1();
foo.thread2();
while(true)
{
}
}
}
上面代码我们可以看到,在main方法中,我们分别调用了thread1和thread2各一次,相当于创建了2个线程。编译上述代码后,我们可以在串口助手中看到“thread 1”和“thread 2”这两个字符串间隔一秒显示。如图
当线程方法声明周期结束后,即退出方法,线程自动销毁。
线程的实现需要单片机上运行操作系统。在mini stm32中,我使用了FreeRTOS作为提供线程的操作系统。在UOL语言上实现线程需要掌握如何使用操作系统,同时需要掌握如何在虚拟机上移植操作系统。后续章节中会详细介绍如何在虚拟机中实现线程和事件机制。
|
|