我有两个字母数组。一个是小写字母,另一个是大写字母,如下所示。
char arr1[] = "abcdefghijklmnopqrstuvwxyz";
char arr2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
我想运行两个线程(POSIX)来获取输出,如下所示。
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ.
答案 0 :(得分:0)
void * print_message_function1(void * ptr);
void * print_message_function2(void * ptr);
sem_t s1,s2;
int main() {
pthread_t thread1, thread2;
const char *message1 = "abcdefghijklmnopqrstuvwxyz";
const char *message2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int iret1, iret2;
sem_init(&s1, 0, 0);
sem_init(&s2, 0, 0);
pthread_create( &thread1, NULL, print_message_function1, (void*) message1);
pthread_create( &thread2, NULL, print_message_function2, (void*) message2);
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
sem_destroy(&s1);
sem_destroy(&s2);
return 0;
}
void * print_message_function1(void * ptr) {
char *message;
message = (char *) ptr;
while(*message != '\0')
{
printf("%c ", *message++);
sem_wait(&s2);
sem_post(&s1);
}
}
void * print_message_function2(void * ptr) {
char *message;
message = (char *) ptr;
while(*message != '\0')
{
printf("%c ", *message++);
sem_post(&s2);
sem_wait(&s1);
}
}