新的C11标准提供了对多线程的支持.
我的问题有点多元化,但绝对是可以回答的.
我看过C11 n1570选秀.
它说:
支持多个执行线程,包括改进的内存排序模型,原子对象和线程局部存储(
<stdatomic.h>和<threads.h>)
什么是改进的内存排序模型?c99标准如何/有什么变化?
如果有人深入研究它们并尝试解释所涉及的语义,我将不胜感激.
据我了解,C11支持:
我希望我什么都不错过?
从现在开始,标准库本身提供(将提供)多线程所需的所有功能,将来不需要POSIX和这样的库(用于多线程支持)?
最后,哪些编译器为上述功能提供支持?当支持这些时,是否有关于时间表的参考?
我记得在C++ 11中有一个编译器支持和功能的链接,也许是这样的?
我有一个用C编写的数字运算应用程序.它是一种主循环,对于每个值调用,增加"i"的值,执行一些计算的函数.我读到了多线程,我正在考虑在C中学习一点.我想知道像我这样的某些通用代码是否可以自动多线程以及如何.
谢谢
PD为了了解我的代码,让我们说它是这样的:
main(...)
for(i=0;i<=ntimes;i++)get_result(x[i],y[i],result[i]);
Run Code Online (Sandbox Code Playgroud)
...
void get_result(float x,float y,float result){
result=sqrt(log (x) + log (y) + cos (exp (x + y));
(and some more similar mathematical operations)
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用编译一些C11代码thread.h,但我不能.我已经重新编译了GCC(现在运行4.6.2),我正在尝试编译gcc -std=c1x file.c -o file.我可以用g ++(使用thread库,即)来做到这一点,但我不能用C.还thread.h没有包含在GCC发行版中吗?
以下代码
#include <threads.h>
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
fatal error: threads.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
使用最新的GCC和Clang -std = c11.
GCC和Clang不支持C11线程吗?或者是否有一个黑客(或安装的东西)来获得它?我只是使用Ubuntu 14.04和Ubuntu repo中的gcc和clang包.
我想知道是否有任何编译器支持相当数量的新C11标准.寻找像Generic Selection等功能.
有什么建议?
我试图在xcode中设置一个c11线程示例...但它似乎没有threads.h标头,虽然它没有抱怨这里描述的宏:
http://www.open-std.组织/ JTC1/SC22/WG14/WWW /文档/ n1570.pdf
__STDC_NO_THREADS__整数常量1,用于指示实现不支持<threads.h>标头.
