看不太懂,请指教,感谢拉。

HUHUJUNJIE 2004-06-22 05:00:59
thread[_nthreads] = new( (void *)&thread_obj[_nthreads] )
Cyg_Thread(CYG_SCHED_DEFAULT_INFO,
entry, data,
NULL, // no name
(CYG_ADDRESS)stack[_nthreads], STACKSIZE );
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HUHUJUNJIE 2004-06-23
  • 打赏
  • 举报
回复
还有就是thread_obj[_nthreads]本来应该就是个地址了。前面在加上个&就更加不明白了。
HUHUJUNJIE 2004-06-23
  • 打赏
  • 举报
回复
这是ECOS里面的一段CODE。

thread[_nthreads] = new( (void *)&thread_obj[_nthreads] )
Cyg_Thread(CYG_SCHED_DEFAULT_INFO,
entry, data,
NULL, // no name
(CYG_ADDRESS)stack[_nthreads], STACKSIZE );

我主要是不明白这里NEW的用法。
因为在Cyg_Thread 这个类里面和他的基类里面我都没有找到他的MEMBER FUNCTION NEW。
darkstar21cn 2004-06-22
  • 打赏
  • 举报
回复
这应该是定义的一个宏吧?
实现表面上能从类名称生成一个实例,实际上是调用了类的构造函数。

楼主可以看一下候俊杰的《深入浅出MFC》。
kaphoon 2004-06-22
  • 打赏
  • 举报
回复
楼主
那个是什么库
望介绍
HUHUJUNJIE 2004-06-22
  • 打赏
  • 举报
回复
static inline void *operator new(size_t size, void *ptr) { return ptr; };


#include <pkgconf/hal.h>
#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
externC void
cyg_hal_invoke_constructors();
#endif

#ifdef NTHREADS

#ifndef STACKSIZE
#define STACKSIZE CYGNUM_HAL_STACK_SIZE_TYPICAL
#endif

static Cyg_Thread *thread[NTHREADS];

typedef CYG_WORD64 CYG_ALIGNMENT_TYPE;

static CYG_ALIGNMENT_TYPE thread_obj[NTHREADS] [
(sizeof(Cyg_Thread)+sizeof(CYG_ALIGNMENT_TYPE)-1)
/ sizeof(CYG_ALIGNMENT_TYPE) ];

static CYG_ALIGNMENT_TYPE stack[NTHREADS] [
(STACKSIZE+sizeof(CYG_ALIGNMENT_TYPE)-1)
/ sizeof(CYG_ALIGNMENT_TYPE) ];

static volatile int nthreads = 0;

static Cyg_Thread *new_thread(cyg_thread_entry *entry, CYG_ADDRWORD data)
{
int _nthreads = nthreads++;

CYG_ASSERT(_nthreads < NTHREADS,
"Attempt to create more than NTHREADS threads");

thread[_nthreads] = new( (void *)&thread_obj[_nthreads] )
Cyg_Thread(CYG_SCHED_DEFAULT_INFO,
entry, data,
NULL, // no name
(CYG_ADDRESS)stack[_nthreads], STACKSIZE );

thread[_nthreads]->resume();

return thread[_nthreads];
}
#endif // defined(NTHREADS)

#define CHECK(b) CYG_TEST_CHECK(b,#b)

#endif // ifndef CYGONCE_KERNEL_TESTS_TESTAUX

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧