diff --git a/src/main/java/com/aparapi/IProfileReportObserver.java b/src/main/java/com/aparapi/IProfileReportObserver.java index 43c17ba895151141dc7cf891527db2e645df4da2..c2f9b903ef5d62e26f4c3280da6f10840a4b1bc0 100644 --- a/src/main/java/com/aparapi/IProfileReportObserver.java +++ b/src/main/java/com/aparapi/IProfileReportObserver.java @@ -29,11 +29,13 @@ public interface IProfileReportObserver { /** * The listener method will be invoked each time a profile report becomes available for each Aparapi Kernel which has * a registered observer.<br/> - * <b>Note1: </b>A report will be generated by a thread executing a kernel, but if multiple threads execute the same kernel, - * on the same device, the report rate is limited to a single thread at a time per kernel per device.<br/> + * <b>Note1: </b>A report will be generated by a thread executing a kernel. If multiple threads execute the same kernel, + * concurrently, this method can be called concurrently too, thus classes implementing this interface need to provide + * a thread safe method. * <br/> - * <b>Note2: </b>When an observer is registered there is no need to acknowledge the reception of a profile report, a new - * one will be automatically generated when another thread runs the same kernel on the same device. + * <b>Note2: </b>If profiling information is to be stored has a {@link com.aparapi.ProfileReport}, it is necessary to clone + * the profileInfo object with {@link com.aparapi.ProfileReport#clone()}. A WeakReference is used to help differentiate such + * need, however it is guaranteed that profileInfo will not be null, during the method execution. * <br/> * @param kernelClass the class of the kernel to which the profile report pertains * @param device the device on which the kernel ran, producing the profile report