int in = 0, out = 0;
int items = 0, spaces = 10;
bool flag; // 标记线程结束运行
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t notfull = PTHREAD_COND_INITIALIZER; // 缓冲区不满
pthread_cond_t notempty = PTHREAD_COND_INITIALIZER; // 缓冲区不空
void *producer( void *arg ) {
while( flag ) {
pthread_mutex_lock( &mutex ); // 为保证条件变量不会因为多线程混乱,所以先加锁
while( !spaces ) { // 避免“惊群”效应,避免因其他线程实现得到事件而导致该线程“假醒”
pthread_cond_wait( ¬full, &mutex );
}
buf[in] = current++;
in = ( in + 1 ) % 10;
items++;
spaces–;
printf( “producer %zu , current = %d\n”, pthread_self(), current );
for( int i = 0; i < 10; i++ ) {
printf( “%-4d”, buf[i] );
}
printf( “\n\n” );
pthread_cond_signal( ¬empty );
pthread_mutex_unlock( &mutex );
}
pthread_exit( NULL );
}
void *consumer( void *arg ) {
while( flag ) {
pthread_mutex_lock( &mutex );
while( !items ) {
pthread_cond_wait( ¬empty, &mutex );
}
buf[out] = -1;
out = ( out + 1 ) % 10;
current–;
items–;
spaces++;
printf( “consumer %zu , current = %d\n”, pthread_self(), current );
for( int i = 0; i < 10; i++ ) {
printf( “%-4d”, buf[i] );
}
printf( “\n\n” );
pthread_cond_signal( ¬full );
pthread_mutex_unlock( &mutex );
}
pthread_exit( NULL );
}
int main() {
memset( buf, -1, sizeof(buf) );
flag = true;
pthread_t pro[10], con[10];
int i = 0;
for( int i = 0; i < 10; i++ ) {
pthread_create( &pro[i], NULL, producer, NULL );
pthread_create( &con[i], NULL, consumer, NULL );
}
sleep(1); // 让线程运行一秒
flag = false;
for( int i = 0; i < 10; i++ ) {
pthread_join( pro[i], NULL );
pthread_join( con[i], NULL );
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!
Docker步步实践
目录文档:
①Docker简介
②基本概念
③安装Docker
④使用镜像:
⑤操作容器:
⑥访问仓库:
⑦数据管理:
⑧使用网络:
⑨高级网络配置:
⑩安全:
⑪底层实现:
⑫其他项目:
图片转存中…(img-ln2DazE1-1711462756928)]
⑩安全:
[外链图片转存中…(img-laq4f7or-1711462756928)]
⑪底层实现:
[外链图片转存中…(img-FgFc4qms-1711462756928)]
⑫其他项目:
[外链图片转存中…(img-Jy2eWGWj-1711462756929)]
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!