IBM Vala Guide
  • Обзор языка программирования Vala.
  • Обзор языка программирования Vala. Часть 1: Общие свойства и характеристики языка Vala
    • Начнём с азов
    • Компиляция и выполнение
    • Обзор синтаксиса
    • Функции
  • Часть 2 Объектно-ориентированное программирование на языке Vala
    • Классы и интерфейсы
    • Делегаты
    • Пример программы
  • Часть 3. Расширенные возможности языка Vala
    • Обработка ошибок
    • Многопоточность
    • Работа с библиотеками
Powered by GitBook
On this page

Was this helpful?

  1. Часть 3. Расширенные возможности языка Vala

Многопоточность

Поток (thread) в языке Vala не определяется во время компиляции, это просто фрагмент кода, который программа во время выполнения будет пытаться выполнить как новый поток. Многопоточность реализована с помощью статических функций класса Thread из библиотеки GLib. Рассмотрим небольшой и очень простой пример.

using GLib;
 public class MyThread : GLib.Object
 {
   public static void * thread_fun()
   {
     stdout.printf( "Поток активизирован... \n" );
     return null;
   }
   public static int main( string [] args )
   {
     if( !Thread.supported() )
     {
       stdout.printf( "Без поддержки потоков выполнение невозможно \n" );
       return -1;
     }
     try
     {
       Thread.create( thread_fun, false );
     } 
     catch( ThreadError ex )
     {
       return -1;
     }
     return 0;
   }
 }

При компиляции необходимо подключить поддержку многопоточности, используя соответствующий ключ:

valac --thread -o thread-test mythread.vala

Отметим, что исходный код был сохранён в файл mythread.vala, а для конечного выполняемого файла задано другое имя (thread-test) с помощью ключа -o.

Результат работы программы показан на рисунке 1.

Этот пример демонстрирует лишь возможность работы с потоками при программировании на языке Vala. В рамках данной статьи невозможно рассмотреть все аспекты и проблемы многопоточности: синхронизацию, кооперацию потоков и т.д.

PreviousОбработка ошибокNextРабота с библиотеками

Last updated 6 years ago

Was this helpful?

Рисунок 1. Выполнение многопоточной программы