用信号量来实现两个线程之间的同步;
线程1打印数字;
线程2打印字母;
#include<semaphore.h>
#include<string>
#include<thread>
#include<iostream>
sem_t sm1,sm2;
string s1="123456789";
string s2="abcdefghi";
int i=0,j=0;
void func1()
{
while(i<s1.size())
{
sem_wait(&sm1);
std::cout<<s1[i++]<<" ";
sem_post(&sm2);
}
}
void func2()
{
while(j<s2.size())
{
sem_wait(&sm2);
cout<<s2[j++]<<" ";
sem_post(&sm1);
}
}
int main() {
sem_init(&sm1,0,1);
sem_init(&sm2,0,0);
thread t1(func1);
thread t2(func2);
t1.join();
t2.join();
return 0;
}
执行结果: