Πρόβλημα σε πρόγραμμα με νήματα!!!

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
maverick
Δημοσιεύσεις: 4
Εγγραφή: 03 Νοέμ 2008 15:38

Πρόβλημα σε πρόγραμμα με νήματα!!!

Δημοσίευση από maverick » 15 Νοέμ 2010 13:36

Να γραφεί πρόγραμμα σε C στο οποίο το αρχικό νήμα θα διαβάζει χαρακτήρες από το χρήστη. Όταν λάβει ένα σήμα SIGUSR1,
τότε σταματάει την εισαγωγή χαρακτήρων και θα δημιουργεί δύο νήματα. Τα νήματα θα τυπώνουν εναλλάξ όλα τα γράμματα
που διαβάστηκαν εναλλάξ (Πχ. Αρχικό νήμα: "Nikhtas!", Νήμα-1: "Nkts", Νήμα-2: "iha!".

[/code]
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>


void *show();
void *count();

char buffer[1000];
char *s;

void telos(int sig){//Function for SIGUSR1

int main(){

pthread_t thread1, thread2;

s = buffer;
printf("Please give characters:");

while((*s++ = getchar())!= 'q');// apo8ikeuei xaraktires mexri na brei to q
//osoi einai meta to q den lambanontai upopsin
*s--;

printf("Uuuups you pressed 'q'... \nWhatever you pressed after that is gone\n");
*s='\0';

pthread_create(&thread1, NULL, &show, NULL);//dimiourgei 2 nimata
pthread_create(&thread2, NULL, &count, NULL);

pthread_join(thread1, NULL);//perimenoume ton termatismo twn nimatwn
pthread_join(thread2, NULL);
return 0;
}

void *show(){ //me8odos 1ou nimatos

Κώδικας: Επιλογή όλων



εχω προβλημα με το σημα πως να το βαλω γι αυτο εβαλα γραμμα να σταματαει την εισαγωγη.κι εχω κ προβλημα πως να διαχωρισω τους χαρακτηρεσ στα νηματα.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα σε πρόγραμμα με νήματα!!!

Δημοσίευση από gvre » 15 Νοέμ 2010 18:26

http://www.yolinux.com/TUTORIALS/LinuxT ... reads.html
To thread1 θα τυπώνει τους χαρακτήρες που βρίσκονται στις θέσεις 0, 2, 4, 6, κλπ και το thread2 αυτούς που βρίσκονται στις θέσεις 1, 3, 5, 7 κλπ.

maverick
Δημοσιεύσεις: 4
Εγγραφή: 03 Νοέμ 2008 15:38

Πρόβλημα σε πρόγραμμα με νήματα!!!

Δημοσίευση από maverick » 15 Νοέμ 2010 19:33

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>


void *show&#40;&#41;;
void *count&#40;&#41;;

char buffer&#91;1000&#93;;
char  *s;

pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALISER;

int main&#40;&#41;&#123;

pthread_t thread1, thread2;

s = buffer;
printf&#40;"Please give characters&#58;"&#41;;

while&#40;&#40;*s++ = getchar&#40;&#41;&#41;!= 'q'&#41;;// apo8ikeuei xaraktires mexri na brei to q
//osoi einai meta to q den lambanontai upopsin
*s--; 

printf&#40;"Uuuups you pressed 'q'... \nWhatever you pressed after that is gone\n"&#41;;
*s='\0';

pthread_create&#40;&thread1, NULL, &show, NULL&#41;;//dimiourgei 2 nimata
pthread_create&#40;&thread2, NULL, &count, NULL&#41;;

pthread_join&#40;thread1, NULL&#41;;//perimenoume ton termatismo twn nimatwn
pthread_join&#40;thread2, NULL&#41;;
return 0;
&#125;

void *show&#40;&#41;&#123; //me8odos 1ou nimatos


	int i = 0;
  
	while&#40;buffer&#91;i&#93; != '\0'&#41;
 
	&#123;
		printf&#40;"THREAD 1&#58; %c\n", buffer&#91;i&#93;&#41;;
 pthread_mutex_lock&#40;&mutex&#41;;
		i = i + 2;
		if&#40;i > 999&#41; break;
pthread_mutex_unlock&#40;&mutex&#41;;
	&#125;
&#125;

void *count&#40;&#41;
&#123;
	int i = 1;
	while&#40;buffer&#91;i&#93; != '\0'&#41;
	&#123;
		printf&#40;"THREAD 2&#58; %c\n", buffer&#91;i&#93;&#41;;
 pthread_mutex_lock&#40;&mutex&#41;;
		i = i + 2;
		if&#40;i > 999&#41; break;
 pthread_mutex_unlock&#40;&mutex&#41;;
	&#125;
&#125;
μπορει καποιος να μου πει τι λαθος εχω κανει????

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες