parent
66d839b947
commit
16f9e9c0b4
@ -0,0 +1,20 @@
|
||||
cpp_src = $(wildcard *.cpp)
|
||||
|
||||
cpp_obj = $(cpp_src:.cpp=.o)
|
||||
c_obj = $(c_src:.c=.o)
|
||||
CC = g++
|
||||
CFLAGS = -Wall -pedantic #-li2c -lpthread
|
||||
LDFLAGS =
|
||||
EXEC = runtest
|
||||
|
||||
|
||||
all : $(EXEC)
|
||||
|
||||
$(EXEC): $(cpp_obj) $(c_obj)
|
||||
$(CC) -pthread -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
||||
|
||||
cleanall:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
@ -0,0 +1,189 @@
|
||||
#if 0
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void *new_thread (void *arg)
|
||||
{
|
||||
printf("A new Thread Created!");
|
||||
return arg;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
pthread_t tid;
|
||||
int checking;
|
||||
|
||||
checking = pthread_create(&tid, NULL, new_thread, NULL);
|
||||
|
||||
if (checking !=0)
|
||||
perror("create Thread");
|
||||
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
#include <functional>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
#include <cstdlib>
|
||||
|
||||
|
||||
static void* task_1(void* arg)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
//for(i = 0; i < 10; i++) {
|
||||
while(1) {
|
||||
std::cout << "Hello, world!" << std::endl;
|
||||
usleep(1000000);
|
||||
}
|
||||
|
||||
|
||||
while(1) usleep(10000);
|
||||
};
|
||||
|
||||
static void* task_2(void* arg)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
std::cout << "Task 2"<< std::endl;
|
||||
usleep(10000000);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
pthread_t th_task_1;
|
||||
pthread_t th_task_2;
|
||||
|
||||
int check = 0;
|
||||
|
||||
std::cout << "threads test" << std::endl;
|
||||
|
||||
check = pthread_create(&th_task_1,
|
||||
NULL,
|
||||
&task_1,
|
||||
NULL);
|
||||
if(check != 0) {
|
||||
std::cout << "Failed to create thread!" << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
check = pthread_create(&th_task_2,
|
||||
NULL,
|
||||
&task_2,
|
||||
NULL);
|
||||
if(check != 0) {
|
||||
std::cout << "Failed to create thread!" << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
pthread_join(th_task_1,NULL);
|
||||
pthread_join(th_task_2,NULL);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <pthread.h>
|
||||
/* 100000 Elemente */
|
||||
#define MAX 100000
|
||||
|
||||
/* ein Array von großen zu kleinen Werten */
|
||||
int test_array1[MAX];
|
||||
int test_array2[MAX];
|
||||
|
||||
/* in umgekehrter Reihenfolge erstellen */
|
||||
void init_test_array(int *array) {
|
||||
int i, j;
|
||||
for(i = MAX,j=0; i >= 0; i--,j++)
|
||||
array[j] = i;
|
||||
}
|
||||
|
||||
// Thread 1
|
||||
static void *bubble1(void* val) {
|
||||
static int i, temp, elemente=MAX;
|
||||
printf("Thread bubble1() wurde gestartet\n");
|
||||
while(elemente--)
|
||||
for(i = 1; i <= elemente; i++)
|
||||
if(test_array1[i-1] > test_array1[i]) {
|
||||
temp=test_array1[i];
|
||||
test_array1[i]=test_array1[i-1];
|
||||
test_array1[i-1]=temp;
|
||||
}
|
||||
printf("Thread bubble1() wurde beendet\n");
|
||||
// Der Rückgabewert interessiert uns nicht.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Thread 2
|
||||
static void *bubble2(void* val) {
|
||||
static int i, temp, elemente=MAX;
|
||||
printf("Thread bubble2() wurde gestartet\n");
|
||||
while(elemente--)
|
||||
for(i = 1; i <= elemente; i++)
|
||||
if(test_array2[i-1] > test_array2[i]) {
|
||||
temp=test_array2[i];
|
||||
test_array2[i]=test_array2[i-1];
|
||||
test_array2[i-1]=temp;
|
||||
}
|
||||
printf("Thread bubble2() wurde beendet\n");
|
||||
// Der Rückgabewert interessiert uns nicht.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int main (void) {
|
||||
pthread_t thread1, thread2;
|
||||
int i, rc;
|
||||
|
||||
// Ausgabe in eine Textdatei
|
||||
freopen("myoutput.txt", "w+", stdout);
|
||||
|
||||
printf("Haupt-Thread main() wurde gestartet\n");
|
||||
// beide Arrays mit Werten initialisieren
|
||||
init_test_array(test_array1);
|
||||
init_test_array(test_array2);
|
||||
// Thread 1 erzeugen
|
||||
rc = pthread_create( &thread1, NULL, &bubble1, NULL );
|
||||
if( rc != 0 ) {
|
||||
printf("Konnte Thread 1 nicht erzeugen\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
// Thread 2 erzeugen
|
||||
rc = pthread_create( &thread2, NULL, &bubble2, NULL );
|
||||
if( rc != 0 ) {
|
||||
printf("Konnte Thread 2 nicht erzeugen\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
// Main-Thread wartet auf beide Threads.
|
||||
pthread_join( thread1, NULL );
|
||||
pthread_join( thread2, NULL );
|
||||
|
||||
// das Ergebnis der Sortierung in die Datei
|
||||
// myoutput.txt schreiben
|
||||
for(i = 0; i < MAX; i++) {
|
||||
printf("[%d-%d]", test_array1[i], test_array2[i]);
|
||||
}
|
||||
printf("\nHaupt-Thread main() wurde beendet\n");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
Binary file not shown.
Loading…
Reference in new issue