Wątek jest to jednostka programowania, która jest niezależna od innych wątków i może być wykonywana jednocześnie z innymi wątkami. Wątki są często używane w systemach wielowątkowych, aby umożliwić wykonywanie kilku zadań jednocześnie. Każdy wątek może mieć swój stan, swoje dane wejściowe i swój kod. W ten sposób program może wykonywać kilka zadań jednocześnie, co może przyspieszyć działanie programu i umożliwić efektywniejsze wykorzystanie zasobów systemowych. Wątki są często używane w różnych aplikacjach, takich jak aplikacje sieciowe, gry, aplikacje graficzne i aplikacje wielowątkowe.
Najważniejsze zasoby procesu, które są wspólne dla istniejących w jego ramach wątków, to:
1.Przestrzeń adresowa, a w szczególności zmienne statyczne i sterta
2. Pliki i urządzenia wejścia i wyjścia
3.Kanały, kolejki i połączenia


Program obrazujący działanie Wątków został zrealizowany przy użyciu Systemu QNX przez środowisko programistyczne QNX Momentics IDE
Kod z wątkami :
#include <stdio.h>//Standardowa bilbloteka w C ( printf)
#include <pthread.h> //Bilbolteka użyta w celu stworzenia watkow
#include<unistd.h> // Bilbolteka użyta w celu zastosowania funkcji sleep
void *funcThreadA( void *args )//* PIERWSZY WATEK
{
int a;
for ( a = 1; a <= 20; a++ )
{
printf( "A\n" );
sleep( 1 );
}
return 0;
}
void *funcThreadB( void *args)//* DRUGI WATEK
{
int b;
for ( b = 1; b <= 10; b++ )
{
printf( "B\n" ); sleep( 2 );
}
return 0;
}
void * funcThreadC( void *args)//* TRZECI WATEK
{
int c;
for ( c = 1; c <= 5; c++ )
{
printf( "C\n" );
sleep( 3 );
}
return 0;
}
int main( void )
{
pthread_t threadA;
pthread_t threadB;
pthread_t threadC;
printf( "Start Programu\n" );
pthread_create( &threadA,NULL,&funcThreadA, NULL );//* A
pthread_create( &threadB, NULL, &funcThreadB, NULL );//* B
pthread_create( &threadC, NULL, &funcThreadC, NULL );//* C
printf( "Glowny program oczekuje..\n" );
pthread_join( threadA, NULL );
pthread_join( threadB, NULL );
pthread_join( threadC, NULL );
printf( "Glowny program konczy\n" );
return 0;
}
Wyjście:

Źródło : Systemy Czasu rzeczywistego QNX6 Neutrino Jędrzej Ułasiewicz