已经有很多关于C11和C11线程的问题,但我没有看到一个明确的答案的任何地方:
是否有任何 C库实现了在GNU/Linux上可用的C11线程接口?例如,提供"可选" <threads.h>和线程支持库一样thrd_create(),从该C11标准近页.376.
理想情况下,我想找到一个普通的,开源的或免费的库,用于通用/通用/多架构(例如,GNU/Linux,x86_64或portable-ish).
一些更有用和相关的SO链接:
库的一些非启动选项:
glibc图书馆没有 ; 自2012年以来有一个开放的bug ; 有GSoC提案,但似乎不被接受 ;pthreadC11线程;我对POSIX线程(很多很好的选项),Windows,IDE和C++ 11 都不感兴趣(我知道GNU libstdc++ …
我正在尝试使用Jython来实现Hadoop 1.2.1中的实现.除了陈旧的项目(比如code.google.com/p/happy)之外,我已经看到了很少关于Jython + Hadoop的事情,以及一个过时的实现$HADOOP_HOME/src/examples/python/WordCount.py,所以也许我正在吵着错误的树开始......但是这个似乎合情合理.我也非常了解Hadoop Streaming,我可以在不使用Jython的情况下在Hadoop中使用Python,但这不是我在这里要做的.
基本上,当我使用调用嵌入式/独立Jython的jar文件java -jar /full/path/to/myjythonjar.jar中,/full/path/to/myjythonjar.jar/Lib在我的Python sys.path,但是当我调用使用bin/hadoop jar /full/path/to/myjythonjar.jar input output的...jar/Lib是不是在我的道路,并且脚本无法找到Python模块,我引用.
这就是我正在做的......
我正在使用Jython jar的独立版本,并使用该JarRunner界面,大致如此处和其他地方所描述的那样; 基本如下:
cp jython-standalone-2.7-b1.jar jythonsalib_test.jar
jar ufe jythonsalib_test.jar org.python.util.JarRunner __run__.py
Run Code Online (Sandbox Code Playgroud)
也就是说,拿一个独立jar的副本,添加我的脚本名称__run__.py,然后更改Manifest来执行JarRunner- 非常感谢@Frank Wierzbicki为那个gem.
当我直接跑步时,这一切都很好,例如,
java -jar jythonsalib_test.jar
Run Code Online (Sandbox Code Playgroud)
我的sys.path报告包括'/full/path/to/jar/file/jythonsalib_test.jar/Lib',这正是我所期望的,它是我从中获取Python模块的路径(通过设置sys.path为空列表(失败)和仅通过路径(工作)进行经验测试).
当我在Hadoop中运行这个相同的jar时,例如,as
bin/hadoop jar /full/path/to/jar/file/jythonsalib_test.jar input output
Run Code Online (Sandbox Code Playgroud)
sys.path 只包括
['__classpath__', '__pyclasspath__']
Run Code Online (Sandbox Code Playgroud)
我还使用了Jython独立jar版本2.5.4-rc1(它具有上述相同的行为)和2.5.3(由于无关原因,这对我不起作用).
正如其他SO答案所指出的,我目前使用的解决方法基本上是直接添加我的jar的Lib目录,在Jython脚本里面
import sys
sys.path.append('/full/path/to/jar/file/jythonsalib_test.jar/Lib')
Run Code Online (Sandbox Code Playgroud)
这基本上有效 - 但这应该是一个分布式应用程序!我没有可以用这种方式引用的路径.其他SO文章提出了各种机制,但基本上都添加到库路径(再次,没有链接因为我有<10rep),如上面的Python,Java或Jython安装或Jython"注册表"(startup/rc)文件.当然,我可以使用HDFS或引导机制或其他机制将某些东西分发给计算节点,比如jar或Jython或其他什么,但代码已经在jar中了! 所以我不应该再单独分发它......
总而言之:看起来我需要在一个文件系统上,该文件系统可以直接并单独 …
我在makefile中有一些辅助目标,我想在makefile中限制内部或"私人"使用(仅限).也就是说,我希望能够在makefile中将这些目标指定为依赖项,但我想阻止将目标从命令行指定为构建目标.有点类似于privateOOP中的函数:目标是单独构建的有害(或根本没有意义).
我希望有一个特殊目标.HIDDEN或者.PRIVATE其他东西可以做到这一点,类似于.PHONY非文件目标,但我认为这不存在.该private关键字仅用于变量.
什么是保护目标仅供内部/私人使用的好/一般/优雅方式?
我能想出的最好的解决方法是检查$(MAKECMDGOALS)"不可接受的"目标,然后指出错误输出; 这似乎不优雅.我确信makefile可以被重写以避免这种情况 - 也许是一个更好的解决方案 - 但这在这里不实用.
在切割线下面......这是一个人为的例子.
虽然我正在寻找一般解决方案,但作为个人/主要目标有害的目标的一个示例是继承特定于目标的变量值:
override CFLAGS += -Wall
all : debug
%.o : %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
debug : CFLAGS += -g3 -O0
release : CFLAGS += -O3
debug : CPPFLAGS += -DDEBUG
release : CPPFLAGS += -DRELEASE
debug release : foo.o bar.o main.o
$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS)
clean:
-rm -f *.o debug release
.PHONY: …Run Code Online (Sandbox Code Playgroud) 一些参考代码使用该功能deal(),如
[a, b, c] = deal (1,2,3)
Run Code Online (Sandbox Code Playgroud)
如文档中所述(对于Octave和MATLAB),该函数只是将输入复制到输出. 为什么deal()在这种情况下使用,甚至一般? 我正在尝试学习"更正确"的MATLAB/Octave用法,并想知道我是否遗漏了一些重要内容.也许,这是用法......
a=1, b=2, c=3或更像是神秘的列表 - 解包单元格数组[a,b,c] = {1,2,3}{:},但比Python 参数解包更受限制,就像这个问题一样?deal()用于复杂/可变参数?我也理解单一论证,[a,b,c]=deal(42)但这基本上是a=b=c=42,并且[a,b,c]=deal(x)分配x给所有人,而不是x每个人的元素.
或者也许只是因为我过度思考这个功能的微不足道的使用.