Wątki

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

Wątek to pojedyncza ścieżka przebiegu sterowania wykonywana w ramach procesu.

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:

Kod tworzy trzy wątki, „A”, „B” i „C”, i uruchamia każdy z nich przy pomocy funkcji pthread_create. Funkcje „funcThreadA”, „funcThreadB” i „funcThreadC” są wywoływane w każdym wątku i wyświetlają odpowiednie litery.

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

Dodaj komentarz