当前位置: 技术问答>linux和unix
高分求win32多线程api转换为linux的具体实现代码
来源: 互联网 发布时间:2015-10-21
本文导语: rt!~ 我现在需要对一个win32程序转化到linux下,在多线程问题上一直止步不前,高分求相应的具体实现,小弟在此谢过了~稍后将我的代码贴上~望各位指点以下~谢谢了~ 我现在重写的多线程函数主要有以下几个:SetEvent,...
rt!~
我现在需要对一个win32程序转化到linux下,在多线程问题上一直止步不前,高分求相应的具体实现,小弟在此谢过了~稍后将我的代码贴上~望各位指点以下~谢谢了~
我现在重写的多线程函数主要有以下几个:SetEvent, ResetEvent, WaitForSingleObject, WaitForMultipleObjects!在我调试的过程中,总是在pthread_cond_timedwait时一直等待,但从我的跟踪可以看出,已经设定了事件了的~但依然阻塞,参考了很多的例程,不明白怎么回事~同时我的时间设了只有1ms。各位师兄是否有相关经验的指点一下,谢谢了
另外我现在的linux环境是uclinux
我现在需要对一个win32程序转化到linux下,在多线程问题上一直止步不前,高分求相应的具体实现,小弟在此谢过了~稍后将我的代码贴上~望各位指点以下~谢谢了~
我现在重写的多线程函数主要有以下几个:SetEvent, ResetEvent, WaitForSingleObject, WaitForMultipleObjects!在我调试的过程中,总是在pthread_cond_timedwait时一直等待,但从我的跟踪可以看出,已经设定了事件了的~但依然阻塞,参考了很多的例程,不明白怎么回事~同时我的时间设了只有1ms。各位师兄是否有相关经验的指点一下,谢谢了
另外我现在的linux环境是uclinux
|
代码已经发送给你了,注意查收
|
把程序流程图画出来,得完全重新来
|
用gdb的时候,可以通过thread命令来切换线程
|
偶也是刚开始作Linux下的多线程,不是很熟悉。你的代码偶就不看了,看看下面这2篇文章对你有帮助的。
http://www-128.ibm.com/developerworks/cn/linux/l-osmig1.html
http://www-128.ibm.com/developerworks/cn/linux/l-ipc2lin1.html
http://www-128.ibm.com/developerworks/cn/linux/l-osmig1.html
http://www-128.ibm.com/developerworks/cn/linux/l-ipc2lin1.html
|
推荐你阅读以下几篇文章:
Migrating Win32 C/C++ applications to Linux on POWER, Part 1: Process, thread, and shared memory services
http://www-128.ibm.com/developerworks/eserver/library/es-MigratingWin32toLinux.html
Migrate Win32 C/C++ application to Linux on POWER, Part 2: Mutexes
http://www-128.ibm.com/developerworks/eserver/library/es-win32linux.html
Migrate Win32 C/C++ applications to Linux on POWER, Part 3: Semaphores
http://www-128.ibm.com/developerworks/eserver/library/es-win32linux-sem.html
Migrating Win32 C/C++ applications to Linux on POWER, Part 1: Process, thread, and shared memory services
http://www-128.ibm.com/developerworks/eserver/library/es-MigratingWin32toLinux.html
Migrate Win32 C/C++ application to Linux on POWER, Part 2: Mutexes
http://www-128.ibm.com/developerworks/eserver/library/es-win32linux.html
Migrate Win32 C/C++ applications to Linux on POWER, Part 3: Semaphores
http://www-128.ibm.com/developerworks/eserver/library/es-win32linux-sem.html
|
static void gettimespec(timespec *ptime, int ms)
{
timeval now;
int tmp;
gettimeofday(&now, NULL);
tmp = now.tv_usec + ms;
ptime->tv_sec = now.tv_sec + tmp / 1000;
ptime->tv_nsec = (tmp % 1000) * 1000;
}
另外,你用static 变量+memcpy 初始化各种mutex/cond变量,感觉好像有问题。建议用pthread_mutex_init/pthread_cond_init等来初始化。
{
timeval now;
int tmp;
gettimeofday(&now, NULL);
tmp = now.tv_usec + ms;
ptime->tv_sec = now.tv_sec + tmp / 1000;
ptime->tv_nsec = (tmp % 1000) * 1000;
}
另外,你用static 变量+memcpy 初始化各种mutex/cond变量,感觉好像有问题。建议用pthread_mutex_init/pthread_cond_init等来初始化。