要求定义一个全局变量char buf[]="1234567",创建两个线程,不考虑退出条件。
a.A线程循环打印buf字符串,
b.B线程循环倒置buf字符串,即buf中本来存储1234567,
倒置后buf中存储7654321 B线程中不打印!!
c.倒置不允许使用辅助数组。
d.要求A线程打印出来的结果只能为1234567或者7654321
不允许出现7634521 7234567等乱序情况
e.不允许使用sleep函数
f.分析出现错误的原因。
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
/*
要求定义一个全局变量char buf[]="1234567",创建两个线程,不考虑退出条件。
a.A线程循环打印buf字符串,
b.B线程循环倒置buf字符串,即buf中本来存储1234567,
倒置后buf中存储7654321 B线程中不打印!!
c.倒置不允许使用辅助数组。
d.要求A线程打印出来的结果只能为1234567或者7654321
不允许出现7634521 7234567等乱序情况
e.不允许使用sleep函数
f.分析出现错误的原因。
*/
char buf[] = "1234567";
int flag = 0; //0
//aa进程的执行体
void* test_a(void* arg)
{
while(1)
{
printf("buf = %s\n", buf);
}
pthread_exit(NULL);
}
//bb进程的执行体
void* test_b(void* arg)
{
int i;
int j = strlen(buf);
char temp = 0;
while(1)
{
for(i=0; i<=j/2; i++)
{
temp = buf[i];
buf[i] = buf[j-1-i];
buf[j-1-i] = temp;
}
}
pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
//创建线程aa
pthread_t aa;
pthread_create(&aa, NULL, test_a, NULL);
//创建线程bb
pthread_t bb;
pthread_create(&bb, NULL, test_b, NULL);
pthread_join(bb,NULL); //阻塞等待
return 0;
}