社区
C++ 语言
帖子详情
使用标准C++如何进行多线程编程?相关类是什麽?请指教!!!
Againstwind
2005-08-06 03:53:04
使用标准C++如何进行多线程编程?相关类是什麽?
如果可以请提供一些例子说明一下!!!
多谢了!!!
...全文
787
22
打赏
收藏
使用标准C++如何进行多线程编程?相关类是什麽?请指教!!!
使用标准C++如何进行多线程编程?相关类是什麽? 如果可以请提供一些例子说明一下!!! 多谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sct
2005-09-07
打赏
举报
回复
学习
healer_kx
2005-08-17
打赏
举报
回复
帮你个鸟啊。
Againstwind
2005-08-16
打赏
举报
回复
先暂时结贴。
如果有问题将会再次开新贴,希望到时仍能得到大家的帮助!!!
Againstwind
2005-08-16
打赏
举报
回复
多谢各位指点!
学习中...
caocheng8230
2005-08-16
打赏
举报
回复
用beginthread和endthread函数,其它的非标准的函数或类都是对该函数的封装
Jagen在路上
2005-08-16
打赏
举报
回复
代码如下:
// POSIX C lib的
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
void *thread_function(void *arg)
{
int i;
for ( i=0; i<20; i++)
{
printf("Thread says hi!\n");
sleep(1);
}
return NULL;
}
int main(void)
{
pthread_t mythread;
if ( pthread_create( &mythread, NULL, thread_function, NULL) )
{
printf("error creating thread.");
abort();
}
if ( pthread_join ( mythread, NULL ) )
{
printf("error joining thread.");
abort();
}
exit(0);
}
// ACE的
#include "ace/OS_main.h"
#include "ace/Task.h"
#include "ace/Service_Config.h"
#if defined (ACE_HAS_THREADS)
#include "ace/Task.h"
#include "ace/Barrier.h"
class Barrier_Task : public ACE_Task<ACE_MT_SYNCH>
{
public:
Barrier_Task ( ACE_Thread_Manager *thr_mgr,
int n_threads,
int n_iterations);
virtual int svc (void);
private:
ACE_Barrier barrier_;
int n_iterations_;
};
Barrier_Task::Barrier_Task ( ACE_Thread_Manager *thr_mgr,
int n_threads,
int n_iterations)
: ACE_Task<ACE_MT_SYNCH> ( thr_mgr ),
barrier_ ( n_threads ),
n_iterations_ ( n_iterations )
{
if (this->activate (THR_NEW_LWP, n_threads) == -1)
ACE_ERROR ((LM_ERROR, "%p\n", "activate failed"));
}
int Barrier_Task::svc (void)
{
for ( int iterations = 1;
iterations <= this->n_iterations_;
iterations++ )
{
ACE_DEBUG ((LM_DEBUG, "(%t) in iteration %d\n", iterations));
this->barrier_.wait ();
}
return 0;
}
static const int DEFAULT_ITERATIONS = 5;
int ACE_TMAIN ( int argc, ACE_TCHAR *argv[] )
{
int n_threads = argc > 1 ? ACE_OS::atoi (argv[1]) : ACE_DEFAULT_THREADS;
int n_iterations = argc > 2 ? ACE_OS::atoi (argv[2]) : DEFAULT_ITERATIONS;
Barrier_Task barrier_task ( ACE_Thread_Manager::instance (),
n_threads,
n_iterations);
ACE_Thread_Manager::instance ()->wait ();
ACE_DEBUG ((LM_DEBUG, "(%t) done\n"));
return 0;
}
#else
int main (int, char *[])
{
ACE_ERROR ((LM_ERROR, "threads not supported on this platform\n"));
return 0;
}
#endif /* ACE_HAS_THREADS */
SeaWave
2005-08-16
打赏
举报
回复
用Windows的API(CreateThread)可能导致内存泄露(仅当线程代码中用了某些C标准库的函数时),这一点很多专著都讨论过了,不再赘述。(不是那个API有问题,而是C标准库有问题)
所以推荐使用createthreadex(),而且注意是ex,而不是createthread()
hejiwangbaggio
2005-08-16
打赏
举报
回复
标准C++中没有多线程类,要实现多线程就要调用系统的api
jiajun2001(嘉俊)说的很对!
Jagen在路上
2005-08-16
打赏
举报
回复
楼上的,你说的太片面了,beginthread和endthread还是封装的CreateThread和CloseHandle,你怎么说?
Againstwind
2005-08-15
打赏
举报
回复
hu_vane(边学边发现自己的无知)
你说得对!
边学边发现自己的无知!!!
Jagen在路上
2005-08-10
打赏
举报
回复
你想要什么例程?POSIX C lib的还是ACE或是COMMON CPP的?
hu_vane
2005-08-10
打赏
举报
回复
多线程是由OS而不是语言决定的,语言本身没有线程的概念。
asphp
2005-08-10
打赏
举报
回复
API
Againstwind
2005-08-09
打赏
举报
回复
jiajun2001(嘉俊)
多谢!如果可以请贴一段例程上来!
如果比较大,请发到我的邮箱里!
我的邮箱:againstwind@gmail.com
healer_kx(天降甘草)
你能也给我个例程看看吗?!
请发到我的邮箱里!
多谢各位了!
healer_kx
2005-08-09
打赏
举报
回复
boost非常可能成为C++的标准,boost::thread还是可以凑合用的。
但是别用了。。。
ACE也是很不错的类库,对于线程和同步做了很多工作,。
我自己写了一个仿Java线程的小类库,我自己觉得比boost那个好用。
wshcdr
2005-08-09
打赏
举报
回复
标准库中没有线程的
Jagen在路上
2005-08-06
打赏
举报
回复
Linux中有POSIX线程库,但是属于C库范畴,commom cpp、boost、ACE等都是非常优秀的可跨平台的C++类库,同时你还可以用QT、wxWindows等跨平台C++GUI类库,他们也提供了线程的支持!如果你喜欢,我也在Linux中开发过类库
Againstwind
2005-08-06
打赏
举报
回复
感谢各位了!
我是在Linux中用标准C++进行开发。
原来一直用VC所以这方面不太了解!
还请指教!
Jagen在路上
2005-08-06
打赏
举报
回复
标准库中没有线程类,可以使用common cpp、boost、ACE等优秀的c++库
doway
2005-08-06
打赏
举报
回复
C++ 本身没有线程类的东西,需要调用操作系统的API。
C# 和 JAVA 就不同了,它们有自己的运行时或者说VM,因此它可以提供线程相关的类。
个人观点,或许不正确。
加载更多回复(2)
在
C++
中
使用
openmp
进行
多线程
编程
本文介绍了如何
使用
OpenMP简化
C++
中的
多线程
编程
。详细解释了OpenMP的基本概念、核心指令及其用法,包括parallel、for、sections、task等,并通过示例展示了如何提高程序的并行效率。
C++
多线程
(一)thread
类
本文深入探讨了
C++
11
标准
中新增的
多线程
特性,介绍了与
多线程
相关
的五个关键头文件的功能及
使用
方法,并通过实例演示了std::thread
类
的构造、线程同步、异步操作等核心概念。
基于
C++
标准
库实现定时器
类
本文详细介绍了基于
C++
标准
库实现定时器
类
的方法,包括两种实现方式:基于线程和基于条件变量。每种实现都提供了代码示例,并讨论了其优缺点。此外,文章还探讨了从 C 语言版本到 Python 和
C++
版本的代码迁移过程,以及如何利用
C++
的特性如智能指针、原子变量和 lambda 函数
进行
封装。
C++
多线程
编程
本文围绕
C++
多线程
编程
展开,介绍了并发
编程
的多进程和
多线程
两种方法,分析了各自优缺点。详细阐述了
C++
11中std::thread的
使用
,包括线程启动、管理、参数传递和所有权转移。还介绍了互斥锁std::mutex及其
相关
类
,以及线程同步原语std::condition_variable的
使用
。
C++
多线程
编程
(一):std::thread的
使用
本文围绕
C++
多线程
编程
展开,介绍了并行和并发概念,对比多进程与
多线程
并发优缺点。阐述
C++
11新
标准
下
多线程
库的
使用
,包括简单实现、线程管理,如启动线程、异常处理、传递参数、转移所有权等,还提及
多线程
编程
核心的资源竞争和数据管理问题。
C++ 语言
65,211
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章