社区
C++ 语言
帖子详情
使用标准C++如何进行多线程编程?相关类是什麽?请指教!!!
Againstwind
2005-08-06 03:53:04
使用标准C++如何进行多线程编程?相关类是什麽?
如果可以请提供一些例子说明一下!!!
多谢了!!!
...全文
714
22
打赏
收藏
使用标准C++如何进行多线程编程?相关类是什麽?请指教!!!
使用标准C++如何进行多线程编程?相关类是什麽? 如果可以请提供一些例子说明一下!!! 多谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
初学Qt编的坦克小游戏,发现错误求
指教
(这个不要积分)
上次那个是第一次上传文件,手残点了一分,这次这个不要,望指导
自制VC++时钟程序
我也是初学者,以后还希望大家多多
指教
。这个是用VC编的时钟程序。
Qt串口助手.rar
QT编写的串口调试助手源码,欢迎喜欢QT的朋友学习
指教
;
备份20170615.rar_Windows
编程
_LabView_
一个自己编写的工程项目,与大家分享。
请
多
指教
C++
类
中
多线程
实现
C++
类
中
多线程
实现: 1.在学习
C++
多线程
过程中,很多教程实现的是
类
外部函数调用,如何实现在本
类
中调用成员函数实现
多线程
,查阅
相关
资料
使用
bind函数绑定所调用函数,也可以将bind函数省略,本例中func1
使用
bind函数,func2将bind函数省略,关于bind函数的原型,可查阅
相关
资料,此处不再详述。如果有更好的办法也
请
多多
指教
。 #include <iostream.h> #include <thread.h> #include <Windows.h> us
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章