【问题标题】:Anyway to use thread in C without pthread.h?无论如何要在没有 pthread.h 的情况下在 C 中使用线程?
【发布时间】:2013-09-09 08:30:09
【问题描述】:

我的环境是 Windows 7 64 位。 目的是使一些线程工作得更快。 我在 Linux 64 中使用过线程(我使用过 pthread),但首先是 Windows。

现在我搜索我的电脑,找不到。 那么除了Visual Studio之外,还有其他方法可以在C中使用线程而不安装或下载其他东西吗? 谢谢。

  • 我不需要 C++ 或 C# 源代码。都是关于 C 的。

【问题讨论】:

    标签: c visual-studio pthreads windows-7-x64


    【解决方案1】:

    win32 库怎么样?

    例如开始:

    HANDLE WINAPI CreateThread(
      _In_opt_   LPSECURITY_ATTRIBUTES lpThreadAttributes,
      _In_       SIZE_T dwStackSize,
      _In_       LPTHREAD_START_ROUTINE lpStartAddress,
      _In_opt_   LPVOID lpParameter,
      _In_       DWORD dwCreationFlags,
      _Out_opt_  LPDWORD lpThreadId
    );
    

    请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx 了解更多您可能想要在此之后使用的线程相关函数。

    除了您的 Visual Studio 工具外,不需要其他库。完全相同的 API 也适用于 32 位或 64 位 Windows 机器。

    【讨论】:

    • 感谢您的友好回答,但这不是我想要的。我猜Windows系统本来就有一些线程方法。是不是?例如,在 Ubuntu 系统中,我可以使用 pthread.h 而无需安装或设置任何东西。此外,该标头中包含某种结构,因此我只制作了类似“pthread_t a;”的线程。这种方式是我想要的。在 Windows 中是不可能的吗?
    • @JuneyoungOh 你可以用 posix 线程做的一切,你可以用 win32 线程做。 API 自然会与您习惯的有所不同 - 但不会有巨大的架构差异。如果您需要跨 Windows 和 Linux 的一致 API,则必须编写(或查找)一些包装代码来处理这两个线程库。例如,C++11 引入了这一点。
    • 谢谢。我只是不明白那个时候环境有多重要。我总是想使用一些在跨环境中运行的代码。但现在我明白有时必须使用其他一些库。选择正确的库也是编写代码的重要事项之一。谢谢,即使这个问题已经很久了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多