关于Linux多线程编程的问题
最近在学习多线程编程,我编了下例实例,但是Printf老是打印不出来啊,这是为什么呢?
#include <pthread.h>#include <sched.h>#include <stdio.h>#include <stdlib.h>#include <string.h>void reader_function( void );void writer_function( void );char buffer;int buffer_has_item = 0;pthread_mutex_t mutex;int main( void ){ pthread_t reader; pthread_t writter; int ret = 0; memset(&reader, 0, sizeof(reader)); printf("main"); pthread_mutex_init(&mutex, NULL); ret = pthread_create(&writter, NULL, (void *)writer_function, NULL); if ( 0 != ret ) { printf("not success"); } ret = pthread_create(&reader, NULL, (void *)reader_function, NULL); if( 0 != ret ) { printf("not success"); } pthread_join(reader, NULL); pthread_join(writter, NULL); return 0;}void writer_function( void ){ printf("writer_function"); while(1) { pthread_mutex_lock(&mutex); if (0 == buffer_has_item) { buffer = 0x31; buffer_has_item = 1; } sleep(1); pthread_mutex_unlock(&mutex); }}void reader_function( void ){ printf("reader_function"); while(1) { pthread_mutex_lock(&mutex); if (1 == buffer_has_item ) { printf("%c", buffer); buffer_has_item = 0; } sleep(1); pthread_mutex_unlock(&mutex); }}