在MSVC 17.8中启用C11线程

n7taea2i  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(73)

我很高兴听到这个C11 threads were finally implemented in Visual Studio 2022 version 17.8 Preview 2
不幸的是,虽然DLL在那里,但我无法在任何地方找到标题。我安装了Visual Studio,使用C++开发的默认选项。我使用最新的Preview(7)和Windows 11 SDK 10.0.22621.0。
有没有人知道如何使他们?

m3eecexj

m3eecexj1#

似乎他们确实实现了一些C11线程支持,但没有提供threads.h

**更新:**有人从微软附加的真实的threads.h在支持线程https://developercommunity.visualstudio.com/t/Missing-threadsh-in-MSVC-178/10514752

我做了一些调查,虽然他们显然没有提供threads.h头文件,但他们确实实现了C11标准的一部分。我通过编写自己的头文件发现了这一点,基于xthreads.h(内部C线程头文件)。从我所读到的内容来看,C标准严重影响了线程库的C版本,所以我假设API应该是类似的。
这是我创建的头文件,它不完整,它没有互斥锁或条件,但它有标准的线程函数thrd_createthrd_join
似乎微软没有实现thrd_sleep,我得到“未解决的符号”,如果我试图定义thrd_sleep

#ifndef _THREADS_H
#define _THREADS_H

#include <time.h>

typedef unsigned int _Thrd_id_t;

struct thrd_t { // thread identifier for Win32
    void* _Hnd; // Win32 HANDLE
    _Thrd_id_t _Id;
};
typedef struct thrd_t thrd_t;

enum thrd_result { 
  thrd_success = 0,
  thrd_nomem = 1,
  thrd_timedout = 2,
  thrd_busy = 3,
  thrd_error = 4
};

/** THIS SECTION IS COPIED FROM GNU LIB C **/
/** Copyright (C) 2018-2023 Free Software Foundation, Inc. **/
typedef int (*thrd_start_t) (void*);
/* Create a new thread executing the function __FUNC.  Arguments for __FUNC
   are passed through __ARG.  If successful, __THR is set to new thread
   identifier.  */
extern int __cdecl thrd_create (thrd_t *__thr, thrd_start_t __func, void *__arg);

/** END GNU LIBC SECTION **/

extern int __cdecl thrd_join(thrd_t, int*);

#endif

字符串
我在一个测试程序中使用了上面的头文件,它成功地链接到了thrd_createthrd_join函数,并且它确实可以创建线程!

ulydmbyx

ulydmbyx2#

我在回答我自己的问题,只是为了让每个人都知道他们意识到了这个问题:
https://developercommunity.visualstudio.com/t/Missing-threadsh-in-MSVC-178/10514752
在2023年12月7日,他们将问题的状态更新为Fixed - Pending Release,沿着出现以下消息:
此问题的修复程序已在内部实施,并正在准备发布。一旦可供下载,我们将更新您。

更新:在2023年12月14日,作为一种解决方法,他们提供了一个指向此版本的threads.h的链接,该版本运行良好。该文件在版本17.9.0预览2.1中仍然缺失

xggvc2p6

xggvc2p63#

所需的threads. h头文件现在可以在https://aka.ms/dc/file?name=B577b3a1006464e90b10197d5d419526c638381100848159134_threads.h&tid=577b3a1006464e90b10197d5d419526c638381100848159134上获得(通过https://developercommunity.visualstudio.com/t/Missing-threadsh-in-MSVC-178/10514752 #T-N10540847),直到Visual Studio的下一个版本发布,然后应该有这个头文件。

相关问题